【发布时间】:2019-09-12 15:51:46
【问题描述】:
我有一个元组列表,每个元组包含三个值。我想将它们“汇总”或分组,以便对于前两个值相同的所有元组,它将返回一个列表列表,其中每个组件列表包含:1:第一个值,2:第二个值,3 : 与前两个匹配的所有第三个值的列表。
因为我在这里编写了整个脚本,所以我对数据类型有一定的灵活性,所以如果我以完全错误的方式接近它,请告诉我。我确实想知道是否有更简单的方法可以使用 Pandas 来完成它。
我想知道使用itertools.groupby() 是否有可能实现这一点。我认为它可能需要与 operator.itemgetter() 结合使用才能访问各种元组的正确部分。
import itertools
import operator
list = [(1, 1, 4), (1, 1, 9), (1, 1, 14), (2, 1, 12), (2, 1, 99), (2, 6, 14), (2, 6, 19)]
list=sorted(list)
def sorter(list):
grouper = itertools.groupby(list, operator.itemgetter(0))
for key, subiter in grouper:
l = []
grouper2 = itertools.groupby(subiter, operator.itemgetter(0))
for key, subiter in grouper2:
l.append(subiter)
yield key, l
这段代码代表了我所想的大致方向,但它不会产生所需的输出。所需的输出是:
[[1, 1, [4, 9, 14]], [2, 1, [12, 99]], [2, 6, [14, 19]]]
再次,我在这里的数据类型方面具有很大的灵活性,所以如果我遇到这个错误,我愿意尝试完全不同的东西。
【问题讨论】:
标签: python python-3.x list