概述
namedtuple描述
Python中存储系列数据,比较常见的数据类型有list,除此之外,还有tuple数据类型。相比与list,tuple中的元素不可修改,在映射中可以当键使用。tuple元组的item只能通过index访问,collections模块的namedtuple子类不仅可以使用item的index访问item,还可以通过item的name进行访问。
- 其首先将各个item命名,然后对每个item赋予数据。
from collections import namedtuple # 使用时先导包
# 初始化需要两个参数,第一个是 name,第二个参数是所有 item 名字的列表。
coordinate = namedtuple('Coordinate', ['x', 'y'])
# 如果你无法理解这样的穿件方式,就先把这句话当成创建了一个继承自namedtuple类的子类,
# 第一个参数是且必须是类名,第二个参数是该类的实例属性的列表
User = namedtuple('User', ['name', 'age', 'home']) #类名User 参数有[name,age,home]
u = User('it', 33, 'beijing')#创建实例对象,并传入对应参数的值
print(u.name) # 通过实例对象名.属性名的方式进行访问
print(u.age)
print(u)
u = u._replace(age=100) # _replace()方法可以更改属性值
print(u.age)
it # 输出结果
33
User(name='it', age=33, home='beijing')
100
- namedtuple 还提供了 _make 从 iterable 对象中创建新的实例:
coordinate._make([10,20]) # 这种方法创建和上述的方法二选一使用
- namedtuple还提供了_replace方法可以为一个对象的item重新赋值
coordinate._replace(x=30) # 重要
- namedtuple还提供了_asdict方法可以将命名元组转换为对应键值字典
print(u._asdict())
# OrderedDict([('name', 'it'), ('age', 100), ('home', 'beijing')])
# 因为元组是有序的,所以直接转成了OrderedDict
d = u._asdict()
print(d)
for i in d:
print(i, d.get(i)) # 以后从字典取值的时候用get(),别再用[]了
# 结果
# OrderedDict([('name', 'it'), ('age', 100), ('home', 'beijing')])
# name it
# age 100
# home beijing
最后
以上就是清新保温杯为你收集整理的collections模块之namedtuple的全部内容,希望文章能够帮你解决collections模块之namedtuple所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复