【collections模块】collections.namedtuple使用

这里namedtuple函数返回的是一个名为typename的tuple子类,这个子类可以通过field_names访问子类的tuple成员,比tuple有更强大的功能。

1:tuple通过item的index访问数据,或者通过index访问其item

student=('math','chinese','english')
print(student[1])
print(student.index('math'))
chinese
0

2:namedtuple collections模块的namedtuple子类不仅可以使用item的index访问item,还可以通过item的name(看成属性)进行访问。可以将namedtuple理解为c中的struct结构,其首先将各个item命名,然后对每个item赋予数据。

这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来访问,使用十分方便。

from collections import namedtuple

# 定义一个namedtuple类型User,并包含'math', 'chinese', 'english'属性。
User = namedtuple('student', ['math', 'chinese', 'english'])

# 创建一个User对象
user = User(math=90, chinese=85, english=80)

# 也可以通过一个list来创建一个User对象,这里注意需要使用"_make"方法
user = user._make([90, 60, 70])
print(user)

# 获取用户的属性
print(user.math)
print(user.chinese)
print(user.english)

# 修改对象属性,注意要使用"_replace"方法
user = user._replace(math=100)
print(user)

#  将User对象转换成字典,注意要使用"_asdict"
print(user._asdict())

输出如下

student(math=90, chinese=60, english=70)
90
60
70
student(math=100, chinese=60, english=70)
OrderedDict([('math', 100), ('chinese', 60), ('english', 70)])

猜你喜欢

转载自blog.csdn.net/lyl771857509/article/details/85001465