这篇文章主要讲解了如何使用Python中的namedtuple,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
,,, namedtuple是Python中存储数据类型,比较常见的数据类型还有有列表和元组数据类型。相比于列表、元组中的元素不可修改,在映射中可以当键使用。
,,,, <强> namedtuple:
强>
namedtuple类位于集合模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护。
namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,还能够方便的通过属性名来访问数据。
接下来通过本文给大家分享Python namedtuple()的使用,一起看看吧!
<>强基本定义强>
<代码>集合。代码> <代码> namedtuple 代码> ( typename , field_names , * , rename=False , =没有违约,,模块=没有)
(1)返回一个名为<强> typename >强的新元组子类
(2)新的子类用于创建类似元组的对象,这些对象具有可通过属性查找访问的字段以及可索引和可及# 8203;及# 8203;迭代的字段<强> field_names 强>
<强> typename 强>
(1) typename表示这个子类的名字,比如c++、Python、Java中的类名
<强> field_names 强>
(1) field_names是一个字符串序列,例如[& # 39;x # 39; & # 39; y # 39;]
(2) field_names可以是单个字符串,每个字段名都用空格或逗号分隔,例如& # 39;x y # 39;或& # 39;x, y # 39;
<强>其他强>
(1)其它的参数并不常用,这里不再介绍啦
基本样例
从进口namedtuple集合 #基本例子 点=namedtuple(& # 39;点# 39;[& # 39;x # 39; & # 39; y # 39;]) #类名为点,属性有& # 39;x # 39;和& # 39;y # 39; p=点(11,y=22) #用位置或关键字参数实例化,因为& # 39;x # 39;在& # 39;y # 39;前,所以x=11,和函数参数赋值一样的 打印(p [0] + p[1]) #我们也可以使用下标来访问 # 33 x, y=p #也可以像一个元组那样解析 print (x, y) 22 #(11日) 打印(p.x + p.y) #也可以通过属性名来访问 # 33 打印(p) #通过内置的__repr__函数,显示该对象的信息 #点(y=x=11日22)
classmethod <代码> somenamedtuple。代码> <代码> _make 代码> ( iterable )
(1)从一个序列或者可迭代对象中直接对field_names中的属性直接赋值,返回一个对象
p=点(y=x=11日22)#新建一个对象 d=p._asdict() #解析并返回一个字典对象 打印(d) # {& # 39;x # 39;: 11日& # 39;y # 39;: 22}
classmethod <代码> somenamedtuple._replace 代码> ( * * kwargs )
(1)这是对某些属性的值,进行修改的,从替代这个单词就可以看出来
(2)注意该函数返回的是一个新的对象,而不是对原始对象进行修改
p=点(y=x=11日22)# x=11, y=22 打印(p) #点(y=x=11日,22) d=p._replace (x=33) # x=33, y=22新的对象 打印(p) #点(y=x=11日,22) 打印(d) 33 #点(x=y=22)
classmethod <代码> somenamedtuple。_fields 代码>
(1)该方法返回该对象的所有属性名,以元组的形式
(2)因为是元组,因此支持加法操作
打印(p._fields) #查看属性名 # (& # 39;x # 39;, & # 39; y # 39;) 颜色=namedtuple(& # 39;颜色# 39;& # 39;红绿蓝# 39;) 像素=namedtuple(& # 39;像素# 39;,点。_fields + Color._fields) #新建一个子类,使用多个属性名 q=像素(128年11日,22日,255年,0) 打印(q)
classmethod <代码> somenamedtuple._field_defaults 代码>
(1)该方法是python3.8新增的函数,因为我的版本是3.6,无法验证其正确性
(2)下面给出官方的示例
如何使用Python中的namedtuple