首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

collections模块中的namedtuple

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笔记侠

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612A1YDXK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券