使用具有多个键的元组的Python itertools.groupby()

使用具有多个键的元组的Python itertools.groupby(),python,group-by,tuples,Python,Group By,Tuples,我正试图读懂一个元组并对其排序。我想按列表中的第一个单词分组,并用最小的第三个单词保留列表。然后我想让它返回保留的所有列表 我发现了一个非常有用的例子,除了我希望用三个单词的列表来实现这一点,而不是两个单词 我得到的电流输出是: grape 3 apple 4 banana 1 我想要的输出是: grape lemon 3 apple banana 4 banana pie 1 grape lemon 3 apple banana 4 banana pie 1 我只是想从列表中找出第二个词

我正试图读懂一个元组并对其排序。我想按列表中的第一个单词分组,并用最小的第三个单词保留列表。然后我想让它返回保留的所有列表

我发现了一个非常有用的例子,除了我希望用三个单词的列表来实现这一点,而不是两个单词

我得到的电流输出是:

grape 3
apple 4
banana 1
我想要的输出是:

grape lemon 3
apple banana 4
banana pie 1
grape lemon 3
apple banana 4
banana pie 1
我只是想从列表中找出第二个词。我该怎么做

import itertools
import operator

L = [('grape', 'orange', 100), ('grape', 'lemon', 3), ('apple', 'kiwi', 15), 
    ('apple', 'pie', 10), ('apple', 'banana',4), ('banana', 'pie', 1), 
    ('banana', 'kiwi', 2)]

it = itertools.groupby(L, operator.itemgetter(0))
for key, subiter in it:
    print(key, min(item[2] for item in subiter))

看起来您的问题与
itertools.groupby
无关,而是与
min
有关

要恢复第三个值最小的元组,请使用
min
函数的
key
参数

import itertools
import operator

L = [('grape', 'orange', 100), ('grape', 'lemon', 3), ('apple', 'kiwi', 15),
    ('apple', 'pie', 10), ('apple', 'banana',4), ('banana', 'pie', 1),
    ('banana', 'kiwi', 2)]

it = itertools.groupby(L, operator.itemgetter(0))

for key, group in it:
    print(*min(group, key=operator.itemgetter(2))) # Use the key argument of min
输出