【问题标题】:sum value if duplicate value in dict python如果dict python中的重复值,求和值
【发布时间】:2022-07-13 23:11:03
【问题描述】:

我有一个如下的字典:

dict_data = {
  "NAME": [A, B, A , B , C , C]
  "VALUE": [100, 200 , 100 , 200, 300, 300]
}

如果 NAME 重复,如何从上面的字典中求和值 输出:

NAME: A
VALUE: 200
NAME: B
VALUE: 400
NAME: C
VALUE: 600

或输出到列表:

[A, B, C]
[200, 400, 600]

【问题讨论】:

  • 你试过什么?

标签: python


【解决方案1】:

使用collections.defaultdict,然后通过键分组进行迭代和求和

dict_data = {
    "NAME": ["A", "B", "A", "B", "C", "C"],
    "VALUE": [100, 200, 100, 200, 300, 300]
}
from collections import defaultdict

result = defaultdict(int)
for key, value in zip(dict_data['NAME'], dict_data['VALUE']):
    result[key] += value
for key, value in result.items():
    print("NAME", key)
    print("VALUE", value)

keys, values = zip(*result.items())
print(keys)
print(values)
NAME A
VALUE 200
NAME B
VALUE 400
NAME C
VALUE 600

('A', 'B', 'C')
(200, 400, 600)

【讨论】:

    【解决方案2】:

    您可以在开始时使用defaultdictzero

    dict_data = {
      "NAME": ['A', 'B', 'A' , 'B' , 'C' , 'C'],
      "VALUE": [100, 200 , 100 , 200, 300, 300]
    }
    
    from collections import defaultdict
    
    res = defaultdict(lambda : 0)
    
    for k,v in zip(dict_data['NAME'], dict_data['VALUE']):
        res[k] += v
        
    print(list(res.keys()))
    print(list(res.values()))
    

    输出:

    ['A', 'B', 'C']
    [200, 400, 600]
    

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 2013-05-22
      相关资源
      最近更新 更多