Python的collections模块中namedtuple结构使用示例


Posted in Python onJuly 07, 2016

namedtuple 就是命名的 tuple,比较像 C 语言中 struct。一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 index 访问,没有明确的称呼,而 namedtuple 就是事先把这些 item 命名,以后可以方便访问。

from collections import namedtuple


# 初始化需要两个参数,第一个是 name,第二个参数是所有 item 名字的列表。
coordinate = namedtuple('Coordinate', ['x', 'y'])

c = coordinate(10, 20)
# or
c = coordinate(x=10, y=20)

c.x == c[0]
c.y == c[1]
x, y = c

namedtuple 还提供了 _make 从 iterable 对象中创建新的实例:

coordinate._make([10,20])

再来举个栗子:

# -*- coding: utf-8 -*-
"""
比如我们用户拥有一个这样的数据结构,每一个对象是拥有三个元素的tuple。
使用namedtuple方法就可以方便的通过tuple来生成可读性更高也更好用的数据结构。
"""
from collections import namedtuple
websites = [
 ('Sohu', 'http://www.google.com/', u'张朝阳'),
 ('Sina', 'http://www.sina.com.cn/', u'王志东'),
 ('163', 'http://www.163.com/', u'丁磊')
]
Website = namedtuple('Website', ['name', 'url', 'founder'])
for website in websites:
 website = Website._make(website)
 print website
 print website[0], website.url

结果:

Website(name='Sohu', url='http://www.google.com/', founder=u'\u5f20\u671d\u9633')
Sohu http://www.google.com/
Website(name='Sina', url='http://www.sina.com.cn/', founder=u'\u738b\u5fd7\u4e1c')
Sina http://www.sina.com.cn/
Website(name='163', url='http://www.163.com/', founder=u'\u4e01\u78ca')
163 http://www.163.com/
Python 相关文章推荐
Python实现批量读取word中表格信息的方法
Jul 30 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
python使用Matplotlib画条形图
Mar 25 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python理解递归的方法总结
Jan 28 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
基于Python中random.sample()的替代方案
May 23 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 #Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 #Python
Python处理json字符串转化为字典的简单实现
Jul 07 #Python
全面了解python字符串和字典
Jul 07 #Python
对于Python中RawString的理解介绍
Jul 07 #Python
python变量不能以数字打头详解
Jul 06 #Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 #Python
You might like
php 删除记录实现代码
2009/03/12 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
详解PHP PDO简单教程
2019/05/28 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
几种响应式文字详解
2017/05/19 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
python编程开发之日期操作实例分析
2015/11/13 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python内置模块turtle绘图详解
2017/12/09 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
Django model反向关联名称的方法
2018/12/15 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
银行简历自我评价
2014/02/11 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
年会主持词结束语
2014/03/27 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
员工自我工作评价
2015/03/06 职场文书