如何在Python中混合两个词典?

时间:2016-05-03 20:47:25

标签: python dictionary

我有以下词典:

dict1={'fx245': 2, 'gt345': 12, 'vf251': 1, 'js921': 3}
dict2={'fx245': 'Alex', 'gt345': 'Peter', 'vf251': 'Louis', 'js921': 'Alice'}

问题是:如何链接这两个词典?例如:

代码fx245,即Alex,编号为2。

帮助和感谢

2 个答案:

答案 0 :(得分:2)

使用词典理解制作一个新的词典:

from collections import namedtuple

dict1 = {'fx245': 2, 'gt345': 12, 'vf251': 1, 'js921': 3}
dict2 = {'fx245': 'Alex', 'gt345': 'Peter', 'vf251': 'Louis', 'js921': 'Alice'}

Person = namedtuple('Person', 'name number')

all_keys = dict1.viewkeys() & dict2.viewkeys()  # just use .keys() on py3
dictmix = {k: Person(dict2.get(k), dict1.get(k)) for k in all_keys}

演示:

>>> dictmix['fx245']
Person(name='Alex', number=2)
>>> dictmix['fx245'].name
'Alex'
>>> dictmix['fx245'].number
2

答案 1 :(得分:2)

给出

dict1 = {'fx245': 2, 'gt345': 12, 'vf251': 1, 'js921': 3}
dict2 = {'fx245': 'Alex', 'gt345': 'Peter', 'vf251': 'Louis', 'js921': 'Alice'}

创建第三个dict,将代码映射到名称和数字:

dict3 = {k:(v, dict1[k]) for k, v in dict2.items()}

这是在行动:

>>> dict3['fx245']
('Alex', 2)
>>> name, num = dict3['fx245']
>>> name
'Alex'
>>> num
2

您在评论中提到要迭代新字典并打印代码,名称和编号。这样做:

for code, (name, num) in dict3.items(): 
    print(code, name, num)