使用python为列表中的相同键求和多个值

Nir*_*ras 4 python list

我有一个如下所示的列表:

(151258350, 2464)
(151258350, 56)
(151262958, 56)
(151258350, 56)
(151262958, 112)
(151262958, 112)
(151259627, 56)
(151262958, 112)
(151262958, 56)
Run Code Online (Sandbox Code Playgroud)

我想要一个看起来像这样的结果:

151259627 56
151262958 448
151258350 2576
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

for key, vals in d.items():
    tempList.append((key, reduce(add, vals))) 
Run Code Online (Sandbox Code Playgroud)

这里,d是具有键值对的列表.tempList是List,在按键对它们求和后将附加值.和添加是一个功能:

def add(x, y): return x+y
Run Code Online (Sandbox Code Playgroud)

如果已经提出这个问题,请指出我,因为我自己找不到这个问题.

pok*_*oke 9

使用柜台:

>>> l = [(151258350, 2464),
(151258350, 56),
(151262958, 56),
(151258350, 56),
(151262958, 112),
(151262958, 112),
(151259627, 56),
(151262958, 112),
(151262958, 56)]
>>> c = Counter()
>>> for k, v in l:
        c[k] += v

>>> c
Counter({151258350: 2576, 151262958: 448, 151259627: 56})
Run Code Online (Sandbox Code Playgroud)


Ani*_*rma 3

num_list = [(151258350, 2464),
(151258350, 56),
(151262958, 56),
(151258350, 56),
(151262958, 112),
(151262958, 112),
(151259627, 56),
(151262958, 112),
(151262958,56)]
num_dict = {}
for t in num_list:
    if t[0] in num_dict:
        num_dict[t[0]] = num_dict[t[0]]+t[1]
    else:
        num_dict[t[0]] = t[1]

for key,value in num_dict.items():
    print "%d %d" %(key,value)
Run Code Online (Sandbox Code Playgroud)

  • 如果键存在,`dict.get(key)` 返回 *值* (`dict[key]`),如果键不存在,则返回 `None` 作为后备值。它实际上并不检查字典中是否存在该键。例如,对于字典 `d = { 'foo': None, 'bar': 0 }`,这些键都不会被报告为字典中存在(因为 `d['foo']` 是 `None` ,并且`d['foo']`返回一个假值)。 (2认同)