gpt4 book ai didi

python - 如果邻居相等,则合并列表成员的排序列表

转载 作者:行者123 更新时间:2023-11-30 23:13:02 26 4
gpt4 key购买 nike

如果我有以下列表,

[[212, -217], [210, -488], [210, 46]]

我想合并它们,以便添加第一个成员相等的列表的第二个成员,并合并条目,因此输出将是:

[[212, -217], [210, -442]]

执行此操作的最佳方法是什么?我的尝试如下,但失败了,因为 y 似乎始终为空:

d = [[212, -217], [210, -488], [210, 46]]
from itertools import groupby
ret = [[x, sum(y)] for x, y in groupby(d, key=lambda x: x[0])]

最佳答案

您已经很接近了,可以使用zip压缩分组的数字,然后使用 map函数将 setsum 应用于您的对:

>>> from operator import itemgetter
>>> [map(sum,map(set,zip(*g))) for _,g in groupby(sorted(d, key=itemgetter(0)),key=itemgetter(0))]
[[210, -442], [212, -217]]

但是作为一种更Pythonic的方式,您可以使用 collections.defaultdict :

>>> from collections import defaultdict
>>> dic=defaultdict(int)
>>> for i,j in d:
... dic[i]+=j
...
>>> dic.items()
[(210, -442), (212, -217)]

关于python - 如果邻居相等,则合并列表成员的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29543202/

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