简单讲解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 CSV模块使用实例
Apr 09 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
python求质数的3种方法
Sep 28 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
python pyheatmap包绘制热力图
Nov 09 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
Python比较配置文件的方法实例详解
Jun 06 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python实现处理mysql结果输出方式
Apr 09 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 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
oracle资料库函式库
2006/10/09 PHP
php笔记之常用文件操作
2010/10/12 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
创建简单的node服务器实例(分享)
2017/06/23 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
利用python发送和接收邮件
2016/09/27 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
8种常用的Python工具
2020/08/05 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
单位工作证明书格式
2014/10/04 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
复试通知单模板
2015/04/24 职场文书
社区干部培训心得体会
2016/01/06 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers