失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > collections模块之namedtuple

collections模块之namedtuple

时间:2019-12-04 02:14:09

相关推荐

collections模块之namedtuple

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# 输出结果33User(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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。