gpt4 book ai didi

python - 如何将 int 的值与元组列表中的同一组组合?

转载 作者:行者123 更新时间:2023-12-03 23:27:03 25 4
gpt4 key购买 nike

我有一个如下所示的数据列表结构:

[('a', 1),('a', 2),('b', 0),('b', 1),('c', 0)]
如果第一项相同,我正在尝试组合元组的第二个值。 (并删除重复项)
最终结果应该是:
[('a', 3),('b', 1),('c', 0)]
我的方法是创建第二个空列表并检查列表中是否存在第一个元素,如果不存在则追加。否则循环遍历第二个列表,并将迭代中 [1] 项的值从第一个列表添加到第二个列表中的 [1] 项。我无法让我的概念发挥作用。如果有人有更有效的解决方案,我也愿意接受建议。
secondList = []
for item in firstList:
if (secondList.count(item[0]]):
secondList.append(item)
else:
for item_j in secondList:
if (item_j[0] == item[0]):
item_j[1] = item_j[1]+item[1]

最佳答案

您可以使用 itertools.groupby .首先按第 0 个索引对它们进行分组,然后对每个组进行分组 sum第一个索引处的值:

from itertools import groupby
from operator import itemgetter
data = [("a", 1),("a", 2),("b", 0),("b", 1),("c", 0)]

result = [(k, sum(item[1] for item in g)) for k, g in groupby(data, key=itemgetter(0))]
print(result)

输出:
[('a', 3), ('b', 1), ('c', 0)]

P.S.:请注意,如果您的列表尚未按照文档中所述的第 0 个索引进行排序,则这将无法按您的预期工作:

Generally, the iterable needs to already be sorted on the same key function.

关于python - 如何将 int 的值与元组列表中的同一组组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62362762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com