python两个字典合并为一个新字典,python合并字典 相同的值相加
问题
现在有多个字典或映射,您想在逻辑上将它们合并成一个映射并执行一些操作,比如查找值或检查一些键是否存在。
解决方案
你有以下两本字典:3360。
a={x: 1, z: 3 }
B={y 3360 2, z 3360 4}现在假设你要在两个字典中进行查找操作(比如先在A中查找,找不到就在B中查找)。一个非常简单的解决方案是在集合模块中使用ChainMap类。例如:
从集合导入链图
c=链图(a,b)
print(c[x]) #输出1(来自a)
print(c[y]) #输出2(来自b)
print(c[z]) # Outputs 3(从a)讨论
链式映射接受多个字典,并在逻辑上将它们转换成一个字典。然后,这些字典并没有真正合并在一起。ChainMap类只是在内部创建一个列表来容纳这些字典,并重新定义一些常见的字典操作来遍历这个列表。大多数字典操作都可以正常使用,比如:
镜头(c)
3
列表(c.keys())
[x , y , z]
list(c.values())
[1, 2, 3]
如果出现重复的键,将返回第一个出现的映射值。因此,示例程序中的C [Z]总是返回字典A中的相应值,而不是b中的相应值。
更新或删除词典总是会影响列表中的第一个词典。例如:
c[z]=10
c[w]=40
del c[x]
a
{w: 40, z: 10}
del c[y]
回溯(最近呼叫):
.
在第一个映射:“y”中找不到Key error :“Key”
ChainMap对于范围变量(如全局变量、局部变量等)非常有用。)在编程语言中。事实上,有一些方法可以让它变得简单:
values=ChainMap()
值[x]=1
#添加新映射
values=values.new_child()
值[x]=2
#添加新映射
values=values.new_child()
值[x]=3
价值观念
ChainMap({x: 3},{x: 2},{x: 1})
值[x]
3
#放弃最后一个映射
价值观=价值观.父母
值[x]
2
#放弃最后一个映射
价值观=价值观.父母
值[x]
一
价值观念
ChainMap({x: 1})
作为ChainMap的替代方法,您可以考虑使用update()方法来合并这两个字典。例如:
a={x: 1, z: 3 }
b={y: 2, z: 4 }
merged=dict(b)
merged.update(a)
已合并[x]
一
已合并[y]
2
已合并[z]
3
这也可以工作,但是它要求您创建一个完全不同的字典对象(或者破坏现有的字典结构)。同时,如果更新了原始词典,这种变化将不会反映在新合并的词典中。例如:
a[x]=13
已合并[x]
1ChianMap使用原始字典,它不会创建新字典。所以它不会产生上面提到的结果,例如:
a={x: 1, z: 3 }
b={y: 2, z: 4 }
merged=ChainMap(a,b)
已合并[x]
一
a[x]=42
merged[x] #注意对合并字典的更改
42
推荐教程:以上《Python教程》是Python合并多个字典或映射教程的详细内容。其他相关文章请多关注盛行的IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。