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