作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的数据列表结构:
[('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)]
Generally, the iterable needs to already be sorted on the same key function.
关于python - 如何将 int 的值与元组列表中的同一组组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62362762/
我是一名优秀的程序员,十分优秀!