使用 Python 对键和值进行分组

Grouping keys and values with Python

我有一些数据。数字键和数值:

[
        (468793398, 672),
        (468793398, 2464),
        (521683990, 131152)
]

我需要像这样对键和值进行分组:

[
    (468793398, 3136), 
    (521683990, 131152)
]

键应该是唯一的,具有相同键的值应该是 相互递增。

请帮我写一个python代码来解决这个问题。看起来很简单,但是我不懂。

您可以为此使用 itertools.groupby(和 operator.itemgetter):

from itertools import groupby
from operator import itemgetter

lst = [
    (468793398, 672),
    (468793398, 2464),
    (521683990, 131152)
]

result = [
    (key, sum(map(itemgetter(1), group))) 
    for key, group in groupby(lst, key=itemgetter(0))
]

另一个解决方案:

lst = [(468793398, 672), (468793398, 2464), (521683990, 131152)]

out = {}
for k, v in lst:
    out[k] = out.get(k, 0) + v

print(list(out.items()))

打印:

[(468793398, 3136), (521683990, 131152)]