具名元组 collections.namedtuple
首先元组支持拆包,通过*args的形式
>>>a, b, *test = range(5)
>>>a, b, test
(0, 1, [2, 3, 4])
好的,那接下来,变量test已经有值了,毫无疑问test = [2, 3, 4]
但有时候我们可能需要取到test中某一个元素的值,例如2,当然我们可以选择列表切片,那有没有一种更好的办法呢?
这里就可以采用具名元组的方式,给test中的每一个字段命名。
import collections
>>>People = collections.namedtuple('Card', ['name', 'age'])
>>>xiaohong = People('xiaohong', '18')
>>>xiaohong
People(name='xiaohong', age='18')
>>>xiaohong.name
xiaohong
>>>xiaohong.age
18
说明:
1.创建具名元组需要两个参数,一个是类名,一个是类的各个字段的名字。后者可以是由数个字符串组成的可迭代对象。
2.存放在对应字段里的数据要以一串参数的形式传入到构造函数中
3.可以通过字段名和位置来获取一个字段的信息
属性和方法
# 获取类包含所有的字段名称
>>>Poeple._fields
('name', 'age')
>>>xiaoming = ('xiaoming', 19)
# _make接收一个可迭代对象来生成一个类的实例
>>>xiaoming = People._make(xiaoming)
# _asdict()是具名元组以collections.OrderedDict的形式返回,进行更有好的显示
>>>xiaoming._asdict()
OrderedDict([('name', 'xiaoming'), ('age', 19)])