如何在python中使用生成器查找特定值
Posted
技术标签:
【中文标题】如何在python中使用生成器查找特定值【英文标题】:How to find specific value using generator in python 【发布时间】:2019-04-16 14:50:57 【问题描述】:我创建了一个返回元组的生成器,例如商品名称和价格。
output = ('apple',$2)
我想在生成器的所有输出中找到价格为最大值时的元组。
当元组不是生成器的输出时,我知道如何获取第二项的最大值,但不知道何时需要对生成器进行循环。
我应该先附加循环结果并创建一个超级列表吗?比如[('apple',$2),('pear',$1) ... ]
【问题讨论】:
$2 是非法 python .. 我认为 - 要么是字符串,要么是没有 $ 符号的数字 【参考方案1】:max
接受任何可迭代的。生成器是可迭代的。您可以提供自定义 key
函数,以便 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)
【讨论】:
如果tup[1]
是int
则有效,否则需要自定义函数转换为int
@Dalvenjia,同意,在这种情况下,您可以使用lambda x: int(x[1])
(如果是字符串)。
或lambda x: int(x[1].strip('$'))
,如果金额是问题中所述的美元以上是关于如何在python中使用生成器查找特定值的主要内容,如果未能解决你的问题,请参考以下文章