小编Ben*_*lin的帖子

对两个值的元组列表进行分组,并返回所有第三个值的列表

我有一个元组列表,每个元组包含三个值。我想将它们“卷起来”或将它们分组,以便对于前两个值相同的所有元组,它将返回一个列表列表,其中每个组件列表包含: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
Run Code Online (Sandbox Code Playgroud)

这段代码代表了我正在考虑的总体方向,但它不会产生所需的输出。所需的输出将是:

[[1, 1, [4, 9, 14]], [2, 1, [12, 99]], [2, 6, [14, 19]]]
Run Code Online (Sandbox Code Playgroud)

同样,我在这里的数据类型方面有很大的灵活性,所以如果我接近这个错误,我愿意尝试完全不同的东西。

python list python-3.x

4
推荐指数
1
解决办法
121
查看次数

标签 统计

list ×1

python ×1

python-3.x ×1