如何在python中使用生成器查找特定值

如何在python中使用生成器查找特定值,python,python-3.x,generator,iterable,Python,Python 3.x,Generator,Iterable,我创建了一个生成器,它返回一个元组,例如一个项目的名称和价格 output = ('apple',$2) 我想在生成器的所有输出中找到价格最大时的元组 当元组不是生成器的输出时,我知道如何获得第二项的最大值,但我不知道生成器何时需要循环 我应该先附加循环结果并创建一个超级列表吗?例如,[('apple',$2),('pear',$1)…]max接受任何iterable。发电机是一台发电机。您可以提供自定义的键功能,以便max只考虑第一个索引: from operator import item

我创建了一个生成器,它返回一个元组,例如一个项目的名称和价格

output = ('apple',$2)
我想在生成器的所有输出中找到价格最大时的元组

当元组不是生成器的输出时,我知道如何获得第二项的最大值,但我不知道生成器何时需要循环


我应该先附加循环结果并创建一个超级列表吗?例如,
[('apple',$2),('pear',$1)…]
max
接受任何iterable。发电机是一台发电机。您可以提供自定义的
功能,以便
max
只考虑第一个索引:

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)

max
接受任何iterable。发电机是一台发电机。您可以提供自定义的
功能,以便
max
只考虑第一个索引:

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)

2美元是非法的。。我认为,要么是字符串,要么是不带$2符号的数字,都是非法的python。。me认为-如果
tup[1]
int
,则它是一个字符串或一个不带$sign的数字,否则转换为int的自定义函数是needed@Dalvenjia,同意,在这种情况下,可以使用
lambda x:int(x[1])
(如果是字符串)。或者
lambda x:int(x[1]。strip(“$”)
如果金额如问题中所述以美元为单位,则如果
tup[1]
是一个
int
,则可以使用转换为int的自定义函数needed@Dalvenjia,同意,在这种情况下,可以使用
lambda x:int(x[1])
(如果是字符串)。或者
lambda x:int(x[1]。strip(“$”)
如果金额如问题中所述以美元为单位