使用具有多个键的元组的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
输出