在不使用Counter的情况下组合python词典中的值

时间:2018-03-14 17:10:22

标签: python python-3.x python-2.7 dictionary

我试图编写这个程序而不使用Counter.Write Python程序来组合python词典列表中的值。转到编辑器 样本数据:

[{'item': 'item1', 'amount': 400}, {'item': 'item2', 'amount': 300}, {'item': 'item1', 'amount': 750}]
**Expected Output: {'item1': 1150, 'item2': 300}**

到目前为止,这是我的代码。

a=[{'item': 'item1', 'amount': 400}, {'item': 'item2', 'amount': 300}, {'item': 'item1', 'amount': 750}]    
cp={}
val=0
for d in a:
    if d['item'] not in cp:
        cp[d['item']]=d['amount']
print(cp)   

我的输出:{'item1': 400, 'item2': 300}

如何合并' item1'的总数?是否有任何帮助?

4 个答案:

答案 0 :(得分:2)

a=[{'item': 'item1', 'amount': 400}, {'item': 'item2', 'amount': 300}, {'item': 'item1', 'amount': 750}]    
cp={}
val=0
for d in a:
    if d['item'] not in cp:
        cp[d['item']] = d['amount']
    else:
        cp[d['item']] += d['amount'] 
print(cp) 

答案 1 :(得分:2)

这是一种方式:

from collections import defaultdict

lst = [{'item': 'item1', 'amount': 400},
       {'item': 'item2', 'amount': 300},
       {'item': 'item1', 'amount': 750}]

d = defaultdict(int)

for i in lst:
    d[i['item']] += i['amount']

# defaultdict(<class 'int'>, {'item1': 1150, 'item2': 300})

答案 2 :(得分:0)

d = {}
for a_dict in all_my_dicts:
    for key in a_dict:
       d[key] = d.get(key,0)+a_dict[key]

我想也许

答案 3 :(得分:0)

您可以在此处使用defaultdict

from collections import defaultdict
for d in l:
    data[d['item']] += d['amount']

Out[72]: defaultdict(int, {'item1': 1150, 'item2': 300})