zoukankan      html  css  js  c++  java
  • Python两个字典键同值相加的几种方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/Jerry_1126/article/details/86378259
    两个字典A = {'a': 1, 'b': 2, 'c': 3}, B = {'b': 4, 'c': 6, 'd': 8} 要合并这两个字典,键值同则相加。

    两个字典如果不考虑键相同则相加的话,可以使用d1.update(d2)可以很方便合并,但这样的后面的字典到中的值会覆盖字典d1中的值。

    >>> A = {'a': 1, 'b': 2}
    >>> B = {'a': 8, 'c': 3}
    >>> A.update(B)
    >>> A
    {'a': 8, 'b': 2, 'c': 3}
    如果要考虑两个字典,如果考虑键同则值相加的问题,可以使用下面的几种方法:

    方法一:
    >>> A = {'a': 1, 'b': 2, 'c': 3}
    >>> B = {'b': 4, 'c': 6, 'd': 8}
    >>> for key,value in B.items():
    ... if key in A:
    ... A[key] += value
    ... else:
    ... A[key] = value
    >>> dict(sorted(A.items(), key=lambda d:d[1]))
    {'a': 1, 'b': 6, 'd': 8, 'c': 9}
    方法二:
    >>> A = {'a': 1, 'b': 2, 'c': 3}
    >>> B = {'b': 4, 'c': 6, 'd': 8}
    >>> C = {}
    >>> for key in list(set(A) | set(B)):
    ... if A.get(key) and B.get(key):
    ... C.update({key: A.get(key) + B.get(key)})
    ... else:
    ... C.update({key: A.get(key) or B.get(key)})
    >>> C
    {'c': 9, 'd': 8, 'a': 1, 'b': 6}
    方法三:
    >>> A = {'a': 1, 'b': 2, 'c': 3}
    >>> B = {'b': 4, 'c': 6, 'd': 8}
    >>> def dict_union(d1, d2):
    ... keys = d1.keys() | d2.keys()
    ... temp = {}
    ... for key in keys:
    ... temp[key] = sum([d.get(key,0) for d in (d1, d2)])
    ... return temp
    >>> C = dict_union(A, B)
    >>> C
    {'d': 8, 'a': 1, 'b': 6, 'c': 9}
    方法四:
    >>> A = {'a': 1, 'b': 2, 'c': 3}
    >>> B = {'b': 4, 'c': 6, 'd': 8}
    >>> C = {}
    >>> for key1 in A:
    ... for key2 in B:
    ... if key1 in B:
    ... C[key1] = A[key1] + B[key1]
    ... else:
    ... C[key1] = A[key1]
    ... if key2 not in A:
    ... C[key2] = B[key2]
    >>> C
    {'a': 1, 'd': 8, 'b': 6, 'c': 9}
    方法五:
    >>> A = {'a': 1, 'b': 2, 'c': 3}
    >>> B = {'b': 4, 'c': 6, 'd': 8}
    >>> C = {}
    >>> for key in A:
    ... if B.get(key):
    ... C[key] = A[key] + B[key]
    ... else:
    ... C[key] = A[key]
    >>> for key in B:
    ... if not A.get(key):
    ... C[key] = B[key]
    >>> C
    {'a': 1, 'b': 6, 'c': 9, 'd': 8}

    rest={}

    for i in freq_stat:
    for key,value in i.items():
    if key in rest:
    rest[key]+=1
    else:
    rest[key]=1

    rest=sorted(rest.items(),key=lambda d:d[1])


     
    ————————————————
    版权声明:本文为CSDN博主「杰瑞26」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Jerry_1126/article/details/86378259

  • 相关阅读:
    echarts曲线图
    echarts画柱状图
    echarts画环形图
    ppt素材网
    黄元御的桔梗元参汤治疗过敏性鼻炎
    vue双向数据绑定对于数组和新增对象属性不能监听的解决办法
    谈谈vue双向数据绑定问题
    一个不错的中医博客
    javascript 中 keyup、keypress和keydown事件
    浏览器渲染页面的过程
  • 原文地址:https://www.cnblogs.com/jfdwd/p/11429488.html
Copyright © 2011-2022 走看看