Python之命名元组

命名元组与普通元组一样,有相同的表现特征,其添加的功能就是可以根据名称引用元组中的项。
collections 模块提供了namedtuple()函数,用于创建自定义的元组数据类型,函数定义为:

collections.namedtuple(typename,field_names,verbose=False, rename=False) 

第一个参数typename是想要创建的自定义元组数据类型的名称。
第二个参数field_names是一个字符串,其中包含使用空格或逗号分隔的名称,例如:’x y’ or ‘x, y’,每个名称代表该元组数据类型的一项。另外,field_names也可以是一个字符串序列[‘x’,’y’].
该函数返回一个自定义的类,可用于创建命名的元组。
例子

除了从元组继承的方法,命名元组还有自己的方法与属性:

classmethod somenamedtuple._make(iterable) 

作用:将现有的序列转换成一个新的该命名元组的实例。
_make

somenamedtuple._asdict() 

作用:返回一个新的有序字典(OrderedDict),其中,每个键都是元组元素的名称,值则是对应的值。
_asdict

somenamedtuple._replace(kwargs) 

作用:返回一个用新值替换指定的字段后的命名元组的新实例。
_replace

somenamedtuple._fields 

作用:以元组的形式返回一个命名元组中的field_names.当创建一个新的命名元组若要用到已创的建命名元组的field_names时,可用该属性。
_field

若要获得命名元组里面某个hn字段的值,可以使用getattr( )函数:

>>> getattr(p,'x')  #返回p.x的值,若x字段不存在,报错AttributeError

可以将一个字典转换成一个命名元组,使用**操作符:

>>> d={'x':22,'y':33}
>>> Point(**d)
Point(x=22,y=33)

由于我们可以将命名元组当作一个普通的Python类来看待,我们就可以方便的来为其增加一些功能:
子类

子类化不利于增加新字段、存储。相反,简单的创建一个新的来自_fields元组类型属性的命名元组可能更加方便:

>>> Point3D = collections.namedtuple('Point3D', Point._fields + ('z',))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值