简单讲解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 相关文章推荐
Python3实现从指定路径查找文件的方法
May 22 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
python matplotlib实现将图例放在图外
Apr 17 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
Python一行代码实现自动发邮件功能
May 30 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
Laravel find in set排序实例
2019/10/09 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
JS实现打字游戏
2019/12/17 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
Python3中的json模块使用详解
2018/05/05 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
python多线程分块读取文件
2019/08/29 Python
Python内置函数locals和globals对比
2020/04/28 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
如何获得EntityManager
2014/02/09 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
安全生产工作汇报
2014/10/28 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
毕业设计致谢语
2015/05/14 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
Python超详细分步解析随机漫步
2022/03/17 Python