Python 高阶函数获取命名属性

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()函数,属性名是一个字符串。使用字符串的话,属性名会是一个在脚本运行期间可以修改的参数,这会使程序更为灵活。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程