Python:对列表。使每一对都相加并求和相同键的值

时间:2019-11-22 12:14:59

标签: python list dictionary

我有一个成对的列表。该列表包含[x,y]的项。我想创建列表或字典,使左边的项为键,右边的为值。该列表可能包含多次相同的键。我想对这些值求和,并保留一次密钥。 。 pairs[0]=['3106124650', 2.86] pairs[1]=['3106124650', 8.86]  对[2] = ['5216154610',23.77]

我想保留一次'3106124650'并求和这些值,所以我的新列表或字典将包含一次该键的值为11.72。  '3106124650',11.72

4 个答案:

答案 0 :(得分:1)

这是一种方法。对于大型数据集,numpy可能会更快。

import collections
result = collections.defaultdict(lambda : 0)
for k,v in pairs:
    result[k]+=v

答案 1 :(得分:0)

sumdict = dict()
for i, v in pairs:
    sumdict[i] = v + sumdict.get(i, 0)

答案 2 :(得分:0)

li=[['a',1],['a',2],['b',3],['c',4]]
d={}
for w in li:
    d[w[0]]=w[1]+d.get(w[0],0)

Output:{'a': 3, 'b': 3, 'c': 4}

答案 3 :(得分:0)

您可以尝试以下操作:

d={}
for entry in pairs:
    if entry[0] in d:
        d[entry[0]]+=entry[1]
    else:
        d[entry[0]]=entry[1]