Как найти конкретное значение с помощью генератора в Python - PullRequest
0 голосов
/ 13 ноября 2018

Я создал генератор, который возвращает кортеж, например, название предмета и цену.

output = ('apple',$2)

Я хочу найти кортеж, когда цена максимальна, из всех выходов генератора.

Я знаю, как получить максимум второго элемента, когда кортеж не является выходом генератора, но я не знаю, когда генератор должен быть зациклен.

Должен ли я добавить зацикленные результаты и сначала создать суперсписок? Например, [('apple',$2),('pear',$1) ... ]

1 Ответ

0 голосов
/ 13 ноября 2018

max принимает любую итерацию. Генератор является итеративным. Вы можете предоставить пользовательскую функцию key, чтобы max учитывал только 1-й индекс:

from operator import itemgetter

# generator expression below can also be a generator function
gen = (i for i in (('apple', 2), ('pear', 1)))

res = max(gen, key=itemgetter(1))  # ('apple', 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...