简单讲解Python编程中namedtuple类的用法


Posted in Python onJune 21, 2016

Python的Collections模块提供了不少好用的数据容器类型,其中一个精品当属namedtuple。

namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。

在python中,传统的tuple类似于数组,只能通过下标来访问各个元素,我们还需要注释每个下标代表什么数据。通过使用namedtuple,每个元素有了自己的名字,类似于C语言中的struct,这样数据的意义就可以一目了然了。当然,声明namedtuple是非常简单方便的。
代码示例如下:

from collections import namedtuple
 
Friend=namedtuple("Friend",['name','age','email'])
 
f1=Friend('xiaowang',33,'xiaowang@163.com')
print(f1)
print(f1.age)
print(f1.email)
f2=Friend(name='xiaozhang',email='xiaozhang@sina.com',age=30)
print(f2)
 
name,age,email=f2
print(name,age,email)

类似于tuple,它的属性也是不可变的:

>>> big_yellow.age += 1
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: can't set attribute

能够方便的转换成OrderedDict:

>>> big_yellow._asdict()
OrderedDict([('name', 'big_yellow'), ('age', 3), ('type', 'dog')])

方法返回多个值得时候,其实更好的是返回namedtuple的结果,这样程序的逻辑会更加的清晰和好维护:

>>> from collections import namedtuple
>>> def get_name():
...   name = namedtuple("name", ["first", "middle", "last"])
...   return name("John", "You know nothing", "Snow")
...
>>> name = get_name()
>>> print name.first, name.middle, name.last
John You know nothing Snow

相比tuple,dictionary,namedtuple略微有点综合体的意味:直观、使用方便,墙裂建议大家在合适的时候多用用namedtuple。

Python 相关文章推荐
Python中使用不同编码读写txt文件详解
May 28 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python中pymysql 模块的使用详解
Aug 12 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 #Python
Centos Python2 升级到Python3的简单实现
Jun 21 #Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 #Python
Python正则表达式使用经典实例
Jun 21 #Python
常见的python正则用法实例讲解
Jun 21 #Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 #Python
Python中的数学运算操作符使用进阶
Jun 20 #Python
You might like
日本十大惊悚动漫
2020/03/04 日漫
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
python开根号实例讲解
2020/08/30 Python
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
VC++笔试题
2014/10/13 面试题
高中运动会广播稿
2014/01/21 职场文书
致百米运动员广播稿
2014/01/29 职场文书
家长给小学生的评语
2014/01/30 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
小学优秀学生评语
2014/12/29 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
三八节活动简报
2015/07/20 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
Redis实战高并发之扣减库存项目
2022/04/14 Redis