Python之namedtuple(具名元组)简介

(本文大部分内容来源于此链接的文章,我对部分内容做了一些改动,方便自己日后复习,若有侵权,请联系我,我会将此文删除,谢谢)

collections模块的namedtuple函数用来构造一个带名称的元组。具名元组的实例与普通元组的实例相比,它们消耗的内存一样多。


使用格式

collections.namedtuple(typename, field_names, verbose=False, rename=False)

参数介绍

  • typename:元组名称
  • field_names:(具名元组中的)元素名称
  • verbose:不用管
  • rename:默认为Fasle。若元素名称中含有Python的关键字,则需设置为rename=True

返回值

返回一个具名元组子类typename。


下面代码为【定义一个具名元组及创建一个具名元组的实例】的一个例子:

>>> from collections import namedtuple
>>> User = namedtuple('User', ['name', 'age', 'id']) # 第二个参数也可以为字符串形式->'name age id'
>>> user = User('xw', '23', '1501144231')
>>> user
User(name='xw', age='23', id='1501144231')
>>> user.age
'23'
>>> user.id
'1501144231'
>>> user[1]
'23'
>>> user[2]
'1501144231'

从上述代码中可以看出定义一个具名元组的规则:创建一个具名元组,需要两个参数:【类名】和【元组中各个元素的名称】,后者可以是【由多个字符串组成的可迭代对象】或【由空格分隔开的字段名组成的字符串】。具名元组可以通过字段名或位置来获取一个字段的信息。


具名元组的特有属性

  • 类属性_fields:包含具名元组类所有字段名的元组
  • 类方法_make(iterable):接受一个可迭代对象iterable来生成一个具名元组的实例
  • 实例方法_asdict():将具名元组以字典dict的形式返回,这样可以将具名元组的信息友好的展示出来
>>> from collections import namedtuple
>>> User = namedtuple('User', ['name', 'sex', 'age']) # 定义一个名为User的具名元组
>>> user = User('xw', 'male', '23')
>>> user._fields 
('name', 'sex', 'age')
>>> user1 = User._make(['xw', 'male', '23']) # 通过"_make"方法,使用列表来创建一个具名元组User的实例
>>> user1
User(name='xw', sex='male', age='23')
>>> user.name # 获取具名元组对象的属性
'xw'
>>> user.sex # 获取具名元组对象的属性
'male'
>>> user = user._replace(age=24) # 使用"_replace"方法来修改对象属性,使用关键字参数修改
>>> user
User(name='xw', sex='male', age=24)
>>> user._asdict() # 使用"_asdict"将具名元组转换为普通字典
{'name': 'xw', 'sex': 'male', 'age': 24}
```ju
(本文大部分内容来源于[此链接](https://www.runoob.com/note/25726)的文章,我对部分内容做了一些改动,方便自己日后复习,若有侵权,请联系我,我会将此文删除,谢谢)

你可能感兴趣的:(Python)