精华内容
下载资源
问答
  • 飘逸的python - 字典合并值相加

    万次阅读 2013-08-17 00:20:46
    在统计汇总游戏数据的时候,有些数据是是每天用字典存的,当我要对多天汇总的时候,就需要合并字典了。 如果key相同的话它们的相加。 不能用update方法,因为用update方法则相同的key的会覆盖,而不是相加。...
    在统计汇总游戏数据的时候,有些数据是是每天用字典存的,当我要对多天汇总的时候,就需要合并字典了。
    如果key相同的话它们的值就相加。
    不能用update方法,因为用update方法则相同的key的值会覆盖,而不是相加。
    千言不如一码。
    def union_dict(*objs):
        _keys = set(sum([obj.keys() for obj in objs],[]))
        _total = {}
        for _key in _keys:
            _total[_key] = sum([obj.get(_key,0) for obj in objs])
        return _total
    
    obj1 = {'a':1,'b':2,'c':3}
    obj2 = {'a':1,'b':3,'d':4}
    print union_dict(obj1,obj2)
    
    输出
    {'a': 2, 'c': 3, 'b': 5, 'd': 4}

    sum([obj.keys() for obj in objs],[])这句可能不太好理解。
    其实sum()函数也有"鲜为人知的参数",即第2个参数,start参数,默认是0。
    而且不止可以是int类型,还可以是其他支持+操作符的东西,比如[]。
    利用这一点,可以对二层数组打平成一层。
    比如
    >>sum([[1,2,3],[4,5]],[])
    [1,2,3,4,5]

    展开全文
  • 里我们来举例讲解Python字典合并值相加与异或对比,以不同的字典为对象来进行操作,,需要的朋友可以参考下
  • python字典合并

    2018-09-19 20:18:01
    字典合并,相同的键对应的值相加 import os a = {"han":1 , "sh":2} b = {"han":2} d = {'han':1 , "sh":3} def union_dict(*objs): keys = set(sum([obj.keys() for obj...

    字典合并,相同的键对应的值相加

    import os
    a = {"han":1 , "sh":2}
    b = {"han":2}
    d = {'han':1 , "sh":3}
    
    def union_dict(*objs):
        keys = set(sum([obj.keys() for obj in objs] , []))
        total = {}
        for key in keys:
            total[key] = sum([obj.get(key , 0) for obj in objs])
        return total
    
    print(union_dict(a , b , d))
    
    展开全文
  • python两个_多个字典合并相加 这只是符合比较正常的需求和场景。 一、适用合并两个字典(key不能相同否则会被覆盖),简单,好用。 1 A = {'a': 11, 'b': 22} 2 B = {'c': 48, 'd': 13} 3 #update() 把字典B的...

    转载:https://www.cnblogs.com/banxiancode/p/12101467.html

    python两个_多个字典合并相加

    这只是符合比较正常的需求和场景。

    一、适用合并两个字典(key不能相同否则会被覆盖),简单,好用。

    1 A = {'a': 11, 'b': 22}
    2 B = {'c': 48, 'd': 13}
    3 #update() 把字典B的键/值对更新到A里
    4 A.update(B)
    5 print(A)

    例子:要求写一段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保留。

    dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}

    dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}

    如上示例得到结果为:

    dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}

    本方法主要用到字典的推导式和.update()方法,一行代码解决:

    a = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
    b = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
    
    c = {x:a[x]+b[x] for x in a if x in b}  #两者共有的  列表推导式
    print(c)
    d=dict()
    d.update(a)
    d.update(b)
    d.update(c)
    print(d)
    #下面是输出结果
    {'b': 5, 'd': 9}
    {'a': 1, 'b': 5, 'c': 3, 'd': 9, 'f': 'hello', 'e': 7, 'm': 9, 'k': 'world'}
    Process finished with exit code 0

    本例另一方法,用到dict.get(key):

    dica = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': "hello"}
    dicb = {'b': 3, 'd': 5, 'e': 7, 'm': 9, 'k': 'world'}
    dic = {}
    for key in dica:
        if dicb.get(key):         #判断dictb中是否存在这个key
            dic[key] = dica[key] + dicb[key]
        else:
            dic[key] = dica[key]
    for key in dicb:
        if dica.get(key):
            pass
        else:
            dic[key] = dicb[key]
    
    print(dic)

    二、适用多种场合,多字典存在相同key需要合并相加的场景比较适用。

    复制代码

     1 def sum_dict(a,b):
     2     temp = dict()
     3     # python3,dict_keys类似set; | 并集
     4     for key in a.keys()| b.keys():
     5         temp[key] = sum([d.get(key, 0) for d in (a, b)])
     6     return temp
     7 
     8 def test():
     9     #python3使用reduce需要先导入
    10     from functools import reduce
    11     #[a,b,c]列表中的参数可以2个也可以多个,自己尝试。
    12     return print(reduce(sum_dict,[a,b,c]))
    13 
    14 a = {'a': 1, 'b': 2, 'c': 3}
    15 b = {'a':1,'b':3,'d':4}
    16 c = {'g':3,'f':5,'a':10}
    17 test()

    复制代码

    三、解包法和第一种效果(限制)一样,B吃掉A。

    1 A = {'a': 11, 'b': 22}
    2 B = {'a': 48, 'b': 13}
    3 print({**A,**B})
    
    欢迎补充一些较好质量的方法、思路及代码。(作者以为这类方法应该少用for if else,可以提高代码可视化)。
    展开全文
  • #二、适用多种场合,多字典存在相同key需要合并相加的场景比较适用。 def sum_dict(a,b): temp = dict() # python3,dict_keys类似set; | 并集 for key in a.keys()| b.keys(): temp[key] = su
  • python | 字典合并

    2021-03-27 21:14:52
    python | 字典合并合并(更新)字典字典value相加合并(不代替)字典相同键整合成列表 合并(更新)字典 key如果相同,则会被覆盖 A = {'a': 11, 'b': 22} B = {'b': 48, 'd': 13} #update() 把字典B的键/对更新到A里 A....

    合并(更新)字典

    key如果相同,则会被覆盖

    A = {'a': 11, 'b': 22}
    B = {'b': 48, 'd': 13}
    #update() 把字典B的键/值对更新到A里
    A.update(B)
    print(A)
    
    {'a': 11, 'b': 48, 'd': 13}
    

    或者pythonic的字典拆分:

    A = {'a': 11, 'b': 22}
    B = {'b': 48, 'd': 13}
    {**A,**B}
    {**B,**A}
    
    {'a': 11, 'b': 48, 'd': 13}
    {'b': 22, 'd': 13, 'a': 11}
    

    字典value相加

    from collections import Counter
    
    A = {'a': 11, 'b': 22}
    B = {'b': 48, 'd': 13}
    
    dict(Counter(A)+Counter(B))
    
    {'a': 11, 'b': 70, 'd': 13}
    

    合并(不代替)字典

    from collections import defaultdict
    lst = [{'a': 123}, {'a': 456},{'b': 789}]
    
    dic = {}
    for _ in lst:
        for k, v in _.items():
            dic.setdefault(k, []).append(v)
            
    dic
    
    {'a': [123, 456], 'b': [789]}
    

    相同键整合成列表

    zipmaplambda三个花里胡哨兄弟的优雅结合,来自这篇博客

    test = [
        {"time": "09:00", "dt":{"key1": "a", "key2": "d", "key3": "g"}},
        {"time": "10:00", "dt":{"key1": "b", "key2": "e", "key3": "h"}}, 
        {"time":"11:00", "dt":{"key1": "c", "key2":"f", "key3":"i"}}
    ]
    
    time, key1, key2, key3 = map(list,zip(*map(lambda x: (x['time'], x['dt']['key1'], x['dt']['key2'], x['dt']['key3']), test)))
    
    time
    key1
    key2
    key3
    
    ['09:00', '10:00', '11:00']
    ['a', 'b', 'c']
    ['d', 'e', 'f']
    ['g', 'h', 'i']
    
    展开全文
  • 两个字典A = {‘a’: 1, ‘b’: 2, ‘c’: 3}, B = {‘b’: 4, ‘c’: 6, ‘d’: 8} 要合并这两个字典,键值同则...如果要考虑两个字典,如果考虑键同则值相加的问题,可以使用下面的几种方法: 方法一: >>> A = {'a
  • <p>python 列表中的字典键有重复,但值不同,如何把重复的键合并并且把值相加,例如: <p>list1 = [{a:1},{b:5},{c:89},{d:8},{b:90},{a:21},{c:7}],求大神指点。</p>
  • Python In [1]: x = {'a': 1, 'b': 2} ...: y = {'b': 3, 'c': 4} ...: In [2]: {**x,**y} Out[2]: {'...
  • 我想提取Sheet表中的N、O和R列,对R列中相同姓名的人对应的N、O列的分别相加,形成图2这样 ![图片说明](https://img-ask.csdn.net/upload/201912/17/1576559417_243731.png) ``` print('Opening workbook...
  • 要求:用户分两行输入两个字典,将两个字典合并为一个字典,如果两个字典中分别有相同的键(key),需将对应的值相加后作为字典中该键对应的新值。 输入格式:用两行输入字典格式的两个数据,字典中键的数据类型统一为...
  • extend与append的区别:extend : 将被合并的集合的所有给主动进行合并的集合 ,最终结果为两个集合的元素个数的总和 append: 将被添加的集合作为一个整体,list1 的元素等于之前个数加1两个列表页可以相加 ...
  • 飘逸的python - 重载操作符

    千次阅读 多人点赞 2013-08-25 08:51:50
    前面有篇博文《 飘逸的python - 字典合并值相加》讲到了如何对字典合并。 通过调用union_dict(obj1,obj2) 来合并。 在这里,我们重载操作符直接用obj1 + obj2来到达相同的目的。 实现方法就是,定义一个类,...
  • python的多态

    2020-04-13 15:30:04
    ## 下面介绍的方法适用于不同的数据类型: “ + ” 在数字中意味着相加运算。 在字符串中,意味着合并两个字符串并返回一个全新的字符串。 在列表中,意味着合并两...适用于字典,删除括号内字典中键的对应。 ...
  • 1.2.3 如何实现两金额数据相加(最多小数点两位) 1.2.4 关于并行计算的一些基础开放问题 1.2.5 请计算XILINX公司VU9P芯片的算力相当于多少TOPS,给出计算过程与公式 1.2.6 一颗现代处理器,每秒大概可以执行...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

python字典合并值相加

python 订阅