如何合并两个字典?含交集键值合并的具体实现问询
嘿,我来帮你搞定这两个字典相关的问题!
一、如何合并两个字典?
合并字典有好几种实用的方法,根据你的Python版本和需求选就行:
方法1:Python 3.9+ 专属的
|运算符
这是最简洁的写法,直接生成新字典,不会修改原有的两个字典。如果有重复键,后面的字典会覆盖前面的:d1 = {'a': 1, 'b': 2} d2 = {'b': 3, 'c': 4} merged_dict = d1 | d2 print(merged_dict) # 输出: {'a': 1, 'b': 3, 'c': 4}方法2:
update()方法
这个方法会直接修改第一个字典,把第二个字典的内容合并进去。如果不想动原字典,可以先复制一份再操作:d1 = {'a': 1, 'b': 2} d2 = {'b': 3, 'c': 4} # 直接修改d1 d1.update(d2) print(d1) # 输出: {'a': 1, 'b': 3, 'c': 4} # 不修改原字典的写法 merged_dict = d1.copy() merged_dict.update(d2)方法3:字典解包
**
适合Python 3.5及以上版本,同样生成新字典,语法也很直观:merged_dict = {**d1, **d2} print(merged_dict) # 输出: {'a': 1, 'b': 3, 'c': 4}
二、创建仅包含共有键且合并对应值的新字典
针对你给出的例子,我们需要先找出两个字典的共有键,再把对应的值(列表)合并起来。用字典推导式就能轻松实现:
d1 = {1: [2, 3, 'str'], 2: [4, 5, 'str2']} d2 = {3: [6, 7], 2: [8, 9]} # 先取键的交集,再合并对应列表 new_d = { key: d1[key] + d2[key] for key in d1.keys() & d2.keys() } print(new_d) # 输出: {2: [4, 5, 'str2', 8, 9]}
简单解释一下:
d1.keys() & d2.keys()会返回两个字典键的交集,这里就是{2}- 对每个共有键,直接把两个字典里的列表相加,就能得到合并后的列表值
如果之后遇到值不是列表的情况,可以先把值转成列表再合并,比如list(d1[key]) + list(d2[key]),不过根据你的场景,直接相加就完全够用啦。
内容的提问来源于stack exchange,提问作者Andy2
相关产品推荐
相关产品推荐

