python - 如何在使用运算符时将过滤器与 itemgetter 一起使用?

标签 python operator-keyword

我有一个字典,其中包含人名股票值(value),我想获取元组组成股票的名称和最大值(value)。这里有一个问题:一些股票值(value)不可用并以 'NaN' 形式插入,因此,我想过滤它们。

max_stock = max(stock.iteritems(), key=operator.itemgetter(1))

如何在代码段中添加过滤选项?

最佳答案

您必须过滤哪些项目进入 max()。您可以在那里使用生成器表达式:

max_stock = max((kv for kv in stock.iteritems() if kv[1] != 'NaN'),
                key=operator.itemgetter(1))

请考虑到,如果过滤后没有留下任何项目,现在可能会引发 ValueError!您可以使用 try... except 语句来处理这种情况:

try:
    max_stock = max((kv for kv in stock.iteritems() if kv[1] != 'NaN'),
                    key=operator.itemgetter(1))
except ValueError:
    # no stock at all
    max_stock = None

关于python - 如何在使用运算符时将过滤器与 itemgetter 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41378631/

相关文章:

c++ - 调用操作 ostream 的函数不需要括号。 C++

c++ - 如何在重载的提取运算符中读取行(忽略空格字符)

c++ - 为什么重载new运算符最后一个sr5对象不占内存?

python - 从 sys.stdin 获取输入,非阻塞

python - NLTK FreqDist,绘制归一化计数?

python 错误 : IndentationError: unindent does not match any outer indentation level

C# 等效于 c++ 中的 bool 运算符和 rhs

python - docker.errors.DockerException : Error while fetching server API version

python在没有for循环的sql语句中列出list的值

python - 如何将列表中的所有元素相互相乘?