简单讲解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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python3+requests接口自动化session操作方法
Oct 13 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
python实现Flappy Bird源码
Dec 24 Python
NumPy 数组使用大全
Apr 25 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
python生成特定分布数的实例
Dec 05 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
自己的js工具 Event封装
2009/08/21 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
Python中有趣在__call__函数
2015/06/21 Python
python实现微信自动回复功能
2018/04/11 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
MYSQL基础面试题
2012/05/13 面试题
小学毕业感言300字
2014/02/19 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
重点工程汇报材料
2014/08/27 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
建党伟业的观后感
2015/06/01 职场文书
招商银行收入证明
2015/06/17 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL