Python 高阶函数获取命名属性,下面来看稍微不同的数据集合。假设这里使用的是NamedTuple的子类而非匿名元组对象。首先定义一个类,它为元组中的两项提供了以下类型提示。
from typing import NamedTuple class YearCheese(NamedTuple): year: int cheese: float
随后将基础数据year_cheese转换为合适的命名元组。转换过程如下所示:
>>> year_cheese_2 = list(YearCheese(*yc) for yc in year_cheese) >>> year_cheese_2 [YearCheese(year=2000, cheese=29.87), YearCheese(year=2001, cheese=30.12), YearCheese(year=2002, cheese=30.6), YearCheese(year=2003, cheese=30.66), YearCheese(year=2004, cheese=31.33), YearCheese(year=2005, cheese=32.62), YearCheese(year=2006, cheese=32.73), YearCheese(year=2007, cheese=33.5), YearCheese(year=2008, cheese=32.84), YearCheese(year=2009, cheese=33.02), YearCheese(year=2010, cheese=32.92)]
有两种方法来确定奶酪消耗量的范围,可以如下所示使用attrgetter()函数,或者使用匿名函数形式。
>>> from operator import attrgetter >>> min(year_cheese_2, key=attrgetter('cheese')) YearCheese(year=2000, cheese=29.87) >>> max(year_cheese_2, key=lambda x: x.cheese) YearCheese(year=2007, cheese=33.5)
这里的重点是,对于匿名函数对象,属性名是代码中的一个标记,而对于attrgetter()函数,属性名是一个字符串。使用字符串的话,属性名会是一个在脚本运行期间可以修改的参数,这会使程序更为灵活。
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com