如何使用Python中的namedtuple

  介绍

这篇文章主要讲解了如何使用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