Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从两个字典创建新字典,其中Key作为第一个dict';s值,并将值作为第二个dict';s值_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 从两个字典创建新字典,其中Key作为第一个dict';s值,并将值作为第二个dict';s值

Python 从两个字典创建新字典,其中Key作为第一个dict';s值,并将值作为第二个dict';s值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,例如: A = {1: "IWillBeAKeySoon", 7: "IHope"} B = {1: "ItSeemsIAmAValue",6: "LostVal"} 我想把A和B结合起来得到一个dict C,它看起来像这样: C = {"IWillBeAKeySoon": "ItSeemsIAmAValue"} 我已经手动完成了: C={A[key]:value for

例如:

A = {1: "IWillBeAKeySoon", 7: "IHope"}
B = {1: "ItSeemsIAmAValue",6: "LostVal"}
我想把A和B结合起来得到一个dict C,它看起来像这样:

C = {"IWillBeAKeySoon": "ItSeemsIAmAValue"}
我已经手动完成了:

C={A[key]:value for key,value in B.items() if key in A}
我认为应该有一些内置函数或更有效的方法来实现,但我找不到。

您可以利用:

关于性能,
dict(zip(…))
似乎是最快的:

import timeit

A = {x: '%s%12d' % ('a', x) for x in range(100)}
B = {x: '%s%12d' % ('b', x) for x in range(100)}

def v1():
    C={A[key]:value for key,value in B.items() if key in B}

def v2():
    C = dict(zip(A.values(), B.values()))

def v3():
    C = {x[0]: x[1] for x in zip(A.values(), B.values())}

print(timeit.timeit(v1))
print(timeit.timeit(v2))
print(timeit.timeit(v3))
18.561055098
9.385801745000002
17.763003313 

如果输入B,你可以省下
,但除此之外,你很好,那是个打字错误!非常感谢。这种方法有一个问题,我得到了一些不匹配的键。我会更新这个问题。
import timeit

A = {x: '%s%12d' % ('a', x) for x in range(100)}
B = {x: '%s%12d' % ('b', x) for x in range(100)}

def v1():
    C={A[key]:value for key,value in B.items() if key in B}

def v2():
    C = dict(zip(A.values(), B.values()))

def v3():
    C = {x[0]: x[1] for x in zip(A.values(), B.values())}

print(timeit.timeit(v1))
print(timeit.timeit(v2))
print(timeit.timeit(v3))
18.561055098
9.385801745000002
17.763003313