如何在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中使用生成器查找特定值的主要内容,如果未能解决你的问题,请参考以下文章

如果使用特定的枚举值,如何生成警告

在 Python 中查找最小值或最大值的值的索引

PL SQL - 使用动态 SQL 生成删除语句

从生成的数组列表python中查找丢失的时间

在 ubuntu 中使用 gcc 生成特定频率的声音?

Python:如何在特定y值(y = 1)的图形中为线条添加标记?