Python如何实现合并字典

  介绍

小编这次要给大家分享的是Python如何实现合并字典,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

Python语言里有许多(而且是越来越多)的高级特性,是Python发烧友们非常喜欢的。在这些人的眼里,能够写出那些一般开发者看不懂的高级特性,就是高手,就是大神。

但你要知道,在团队合作里,炫技是大忌。

    <李>为什么这么说呢?我说下自己的看法:李 <>李越简洁的代码,越清晰的逻辑,就越不容易出错; <李>在团队合作中,你的代码不只有你在维护,降低别人的阅读/理解代码逻辑的成本是一个良好的品德李

简单的代码,只会用到最基本的语法糖,复杂的高级特性,会有更多的依赖(如语言的版本)

该篇是“炫技系列”的第二篇内容,在这个系列里,我将总结盘点一下,我所见过的那些炫技操作。在这里,如果你是Python发烧友,你可以学到一些写出超酷的代码书写技巧。同时,看了这些内容,对你在阅读别人的代码时,也许会有些帮助。

1。最简单的原地更新

字典对象内置了一个更新方法,用于把另一个字典更新到自己身上。

在祝辞祝辞形象={“name":“xiaoming",“age": 27}   在在在ext_info={“gender":“male"}   在在在   在在在profile.update (ext_info)   在在在打印(概要)   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}

如果想使用更新这种最简单,最地道原生的方法,但又不想更新到自己身上,而是生成一个新的对象,那请使用深拷贝。

在祝辞祝辞形象={“name":“xiaoming",“age": 27}   在在在ext_info={“gender":“male"}   在在在   在在在从复制进口deepcopy   在在在   在在在full_profile=deepcopy(概要)   在在在full_profile.update (ext_info)   在在在   在在在打印(full_profile)   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}   在在在打印(概要)   {“name":“xiaoming",“age": 27}

2。先解包再合并字典

使用* *可以解包字典,解包完后再使用dict或者{}就可以合并。

在祝辞祝辞形象={“name":“xiaoming",“age": 27}   在在在ext_info={“gender":“male"}   在在在   在在在full_profile01={* *, * * ext_info}   在在在打印(full_profile01)   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}   在在在   在在在full_profile02=dict (* *, * * ext_info)   在在在打印(full_profile02)   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}   若你不知道dict (* *, * * ext_info)做了啥,你可以将它等价于   在在在dict (((“name",“xiaoming"), (“age" 27), (“gender",“male")))   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}

3。出现借助itertools

在Python里有一个非常强大的内置模块,它专门用于操作可迭代对象。

正好我们字典也是可迭代对象,自然就可以想的到,可以使用<代码> itertools.chain() 函数先将多个字典(可迭代对象)串联起来,组成一个更大的可迭代对象,然后再使用dict转成字典。

在祝辞祝辞出现进口itertools   在在在   在在在形象={“name":“xiaoming",“age": 27}   在在在ext_info={“gender":“male"}   在在在   在在在   在在在dict (itertools.chain (profile.items (), ext_info.items ()))   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}

4。借助ChainMap

如果可以引入一个辅助包,那我就再提一个,ChainMap也可以达到出现和itertools同样的效果。

在祝辞祝辞从进口ChainMap集合   在在在   在在在形象={“name":“xiaoming",“age": 27}   在在在ext_info={“gender":“male"}   在在在   在在在dict (ChainMap(概要,ext_info))   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27日& # 39;性别# 39;:& # 39;男性# 39;}

使用ChainMap有一点需要注意,当字典间有重复的键时,只会取第一个值,排在后面的键值并不会更新掉前面的(使出现用itertools就不会有这个问题)。

在祝辞祝辞从进口ChainMap集合   在在在   在在在形象={“name":“xiaoming",“age": 27}   在在在ext_info={“age": 30}   在在在dict (ChainMap(概要,ext_info))   {& # 39;名字# 39;:& # 39;小明# 39;,& # 39;年龄# 39;:27}

Python如何实现合并字典