Python collections 之 namedtuple

Python的collections模块提供了一个名为namedtuple的子类,它使得创建元组类变得简单。与普通元组不同,namedtuple不仅可以通过索引访问元素,还能通过元素名称访问,极大地提高了代码的可读性和便利性。在collections模块中,namedtuple相当于C语言中的struct结构,首先将各个元素进行命名,然后为每个元素赋予数据。创...
Python collections 之 namedtuple
Python的collections模块提供了一个名为namedtuple的子类,它使得创建元组类变得简单。与普通元组不同,namedtuple不仅可以通过索引访问元素,还能通过元素名称访问,极大地提高了代码的可读性和便利性。在collections模块中,namedtuple相当于C语言中的struct结构,首先将各个元素进行命名,然后为每个元素赋予数据。

创建namedtuple的语法为:

collections.namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

该函数返回一个新的元组子类,其名为typename。使用这个新的子类创建类元组的对象,可以利用字段名获取属性值,同时也可使用索引和迭代获取值。

field_names应该是一个字符串序列,如[‘x’, ‘y’],或者纯字符串,通过空白或逗号分隔元素名,例如'xy'或'x,y'。field_names的标识符应由字母、数字和下划线组成,但首字符不能是数字或下划线,并且不能是关键词,如class、for、return、global、pass、raise等。

defaults可以设置为None或一个包含默认值的迭代器。当默认值位于其他没有默认值的域之后时,defaults将应用到最右侧的参数。例如,对于domain ['x', 'y', 'z'] 和默认值 (1,2),x必须指定参数值,y默认值为1,z默认值为2。

以Person为例,创建一个包含姓和名的namedtuple。

常用的方法包括:

1_make:从现有序列或迭代器创建实例

2_asdict:返回一个ordereddict,字段名称与对应的值映射

3_replace:返回一个新实例,将指定域替换为新值

4_fields:返回字段名列表

利用fields属性,可以将两个namedtuple组合在一起。同时,namedtuple作为一个类,允许通过子类来扩展其功能。2024-08-13
mengvlog 阅读 9 次 更新于 2025-07-20 15:48:03 我来答关注问题0
檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部