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

How to use filter with itemgetter while using the operator?

我有一个 dictionarypeople's namestock value,我想得到 tuple 包含股票的名称和最大值。这是一个问题:一些股票价值不可用并作为 '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