【发布时间】:2016-12-29 11:17:06
【问题描述】:
我有一个dictionary 和people's name 和stock value,我想获得包含股票名称和最大值的tuple。这是一个问题:一些股票价值不可用并作为'NaN' 插入,因此,我想过滤它们。
max_stock = max(stock.iteritems(), key=operator.itemgetter(1))
如何在代码中添加过滤选项?
【问题讨论】:
我有一个dictionary 和people's name 和stock 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
【讨论】: