简单讲解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语言实现百度语音识别API的使用实例
Dec 13 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
Python 下载及安装详细步骤
Nov 04 Python
Python如何优雅获取本机IP方法
Nov 10 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
python实现扫雷游戏的示例
Oct 20 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
js文件Cookie存取值示例代码
2014/02/20 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
JavaScript多线程详解
2015/08/12 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
Python常用的爬虫技巧总结
2016/03/28 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python dict的常用方法示例代码
2020/06/23 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
Python函数调用追踪实现代码
2020/11/27 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
观看《永远的雷锋》心得体会
2014/03/12 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
企业授权委托书范本
2014/04/02 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android