合并Python字典

27 投票
5 回答
21591 浏览
提问于 2025-04-15 19:55

我想把下面这两个Python字典合并在一起:

dict1= {'paul':100, 'john':80, 'ted':34, 'herve':10}
dict2 = {'paul':'a', 'john':'b', 'ted':'c', 'peter':'d'}

output = {'paul':[100,'a'],
          'john':[80, 'b'],
          'ted':[34,'c'],
          'peter':[None, 'd'],
          'herve':[10, None]}

我希望能保留两个字典里的所有键。
有没有什么简单有效的方法可以做到这一点呢?

5 个回答

9

Python2.7Python3.1中,你可以通过结合使用列表、集合和字典的简洁写法,轻松地处理任意数量的字典!

>>> dict1 = {'paul':100, 'john':80, 'ted':34, 'herve':10}
>>> dict2 = {'paul':'a', 'john':'b', 'ted':'c', 'peter':'d'}
>>> dicts = dict1,dict2
>>> {k:[d.get(k) for d in dicts] for k in {k for d in dicts for k in d}}
{'john': [80, 'b'], 'paul': [100, 'a'], 'peter': [None, 'd'], 'ted': [34, 'c'], 'herve': [10, None]}

Python2.6没有集合和字典的简洁写法。

>>> dict1 = {'paul':100, 'john':80, 'ted':34, 'herve':10}
>>> dict2 = {'paul':'a', 'john':'b', 'ted':'c', 'peter':'d'}
>>> dicts = dict1,dict2
>>> dict((k,[d.get(k) for d in dicts]) for k in set(k for d in dicts for k in d))
{'john': [80, 'b'], 'paul': [100, 'a'], 'peter': [None, 'd'], 'ted': [34, 'c'], 'herve': [10, None]}
17

这个代码可以正常运行:

{k: [dict1.get(k), dict2.get(k)] for k in set(dict1.keys() + dict2.keys())}

输出结果是:

{'john': [80, 'b'], 'paul': [100, 'a'], 'peter': [None, 'd'], 'ted': [34, 'c'], 'herve': [10, None]}
22

这段代码的作用是……

首先,它会……然后,它会……最后,它会……

通过这些步骤,我们可以看到……

总的来说,这段代码的目的是……

如果你对这些步骤有疑问,可以逐个分析,理解每一部分是如何工作的。

记得多动手实践,这样才能更好地掌握这些内容!

output = {k: [dict1[k], dict2.get(k)] for k in dict1}
output.update({k: [None, dict2[k]] for k in dict2 if k not in dict1})

撰写回答