简单讲解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编写生成树状结构的文件目录的脚本的教程
May 04 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
Python socket非阻塞模块应用示例
Sep 12 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
python中time包实例详解
Feb 02 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
解决python写的windows服务不能启动的问题
2014/04/15 Python
PyMongo安装使用笔记
2015/04/27 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python取代netcat过程分析
2018/02/10 Python
利用python修改json文件的value方法
2018/12/31 Python
Python判断有效的数独算法示例
2019/02/23 Python
python读取Excel表格文件的方法
2019/09/02 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
学校创先争优活动总结
2014/08/28 职场文书
基层党员对照检查材料
2014/09/24 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
二手房购房意向书
2015/05/09 职场文书