简单讲解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程序设计入门(1)基本语法简介
Jun 13 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
Python探索之创建二叉树
Oct 25 Python
Python人脸识别初探
Dec 21 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
对Python实现累加函数的方法详解
Jan 23 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
Python3 类型标注支持操作
Jun 02 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的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
python根据日期返回星期几的方法
2015/07/06 Python
Python内建数据结构详解
2016/02/03 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
python:print格式化输出到文件的实例
2018/05/14 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
py-charm延长试用期限实例
2019/12/22 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
服装厂厂长职责
2013/12/16 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
贷款承诺书
2015/01/20 职场文书
工程部主管岗位职责
2015/02/12 职场文书
文化大革命观后感
2015/06/17 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis