python两个字典合并为一个新字典,python合并字典 相同的值相加

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: