使用 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)]
我有一些数据。数字键和数值:
[
(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)]