collections.namedtuple
python的collections模块中提供了很多很好用的数据容器类型,namedtuple就是其中之一。
namedtuple其实是tuple的一个子类,namedtuple除了继承的tuple的方法和属性之外,还增加了一些额外的功能,namedtuple赋予元组中每个位置的意义,并且使代码的可读性大大的提高。
namedtuple一共接收4个参数,其中两个是可选参数:
typename:类型名称(可以理解为class name)
fueld_names:字段名称
verbose:是否在构建前打印类的定义 默认值是False
rename:是否要处理重复字段和关键字 默认值是False
nametuple构建方式:
namedtuplent属性
_fields
列出字段名称的字符串元组。对于从现有的namedtuplent中创建新的namedtuplent类型非常有用。
举个栗子
1.现在有一个点对象和颜色对象
2.需要创建一个带颜色的点对象只需要装点对象和颜色对象的_fields相加就行了。
namedtuple方法:
def _make(cls, iterable, new=tuple.new, len=len)):
从现有序列或可迭代的序列中创建新实例
iterable:可迭代对象
return: nametuple对象
这理需要注意一下,_make是类方法。
def _asdict(self):
返回一个新OrderedDict对象,该方法将字段名映射到它们相应的值
return:OrderedDict对象。
OrderedDict是一个有序字典用法和dict常规字典差不多,这理暂不多介绍。
def _replace(_self, **kwds):
返回namedtupl的新实例,将指定字段替换为新值
**kwds:将要修改的字段和值以 key = value形式传进去
return:返回namedtupl的新实例
new_point = point._replace(z = 30)
这理需要注意一下,如果传入一个不存在的key,value则会一个
namedtuple VS tuple
1.使用namedtuple可以让代码更加明确,更能表达代码的语义
两者的效果是一样,但明显point.x的可读性更高。
2.非常方便的将namedtuple转换dict,而tuple则需要花费一些力气才行。
3.namedtuple兼容tuple
什么用时候用namedtupl?
处理表格数据时,namedtupl是一把利器,举个栗子
point.csv
print的打印:
Point(x='x', y='y', z='z')
Point(x='10', y='30', z='25')
Point(x='20', y='25', z='30')
大家可以举一反三。
End
如果你觉得还不错,那就点个赞吧
听说喜欢留言、分享的人
运气都不会差
python笔记侠
领取专属 10元无门槛券
私享最新 技术干货