Python中字典合并的七种方法全集

51 篇文章 3 订阅
17 篇文章 1 订阅

字典是Python中常见的数据类型,表示的是键(key)与值(value)一一对应的映射关系。

字典的合并是Python中的常用操作,准确快速的字典合并可以提升程序的运行速度,本人整理了网上常见的字典合并的7种方法供大家学习参考。

特别提醒:第六种和第七种方法你可能没有见过,所以一定要看到最后。

一、dict.items()相加法

通过list把字典转化为列表后相加,然后再转化为字典。

dic1 = {"张三":23,"李四":18,"王五":25}
dic2 = {"赵六":31, "麻八":22}
dic3 = dict(list(dic1.items()) + list(dic2.items()))
print(dic3)

二、dict.update()方法

通过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加星号法

这种方法是把其中一个字典用双星号解包,然后用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推荐使用第六种方法,如果想把字典中键值相加,可以用第七种方法。

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PythonFun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值