字典是Python中常见的数据类型,表示的是键(key)与值(value)一一对应的映射关系。
字典的合并是Python中的常用操作,准确快速的字典合并可以提升程序的运行速度,本人整理了网上常见的字典合并的7种方法供大家学习参考。
特别提醒:第六种和第七种方法你可能没有见过,所以一定要看到最后。
通过list把字典转化为列表后相加,然后再转化为字典。
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22}
dic3 = dict(list(dic1.items()) + list(dic2.items()))
print(dic3)
通过dic1.update(dic2)把两个字典进行合并。
这种update的方法,会把dic1和dic2中重复的键改写,即用dic2中的张三的值更改dic1的值。
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22,"张三":22}
dic1.update(dic2)
print(dic1)
这种方法是先定义一个空字典,然后遍历dic1和dic2,然后写入到空词典中。
代码如下:
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22,"张三":22}
dic3 = {}
for k,v in dic1.items():
dic3[k] = v
for k,v in dic2.items():
dic3[k] = v
print(dic3)
在python3.5之后,可以用星号来解包字典。
具体的代码如下:
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22,"张三":22}
dic3 = {**dic1,**dic2}
print(dic3)
这种方法是把其中一个字典用双星号解包,然后用dict把两个字典合并。
具体的代码如下:
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22,"张三":22}
dic3 = dict(dic1,**dic2)
print(dic3)
从Python 3.9开始, 字典引入了合并操作符 ( | ) 进行字典合并,操作非常简单:
源代码如下:
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22,"张三":22}
dic3 = dic1 | dic2
print(dic3)
这种方法适用于键为字符型,值为数值型的字典,而且与之前的改写键值不一样的是,这种方法可以把键名重复的键值加起来或者进行运算。
dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22,"张三":22}
dic3 = {k:dic1.get(k,0)+dic2.get(k,0) for k in set(dic1|dic2)}
print(dic3)
随着Python的不断更新,字典合并越来越简单,Python的代码也越来越优雅。如果你是高版本的Python推荐使用第六种方法,如果想把字典中键值相加,可以用第七种方法。