小编这次要给大家分享的是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如何实现合并字典