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守护进程和脚本单例运行详解
Jan 06 Python
Python3 queue队列模块详细介绍
Jan 05 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
python爬虫实现中英翻译词典
Jun 25 Python
jupyter notebook清除输出方式
Apr 10 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
Python 存取npy格式数据实例
Jul 01 Python
python如何快速生成时间戳
Jul 21 Python
python查询MySQL将数据写入Excel
Oct 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中的Class的几点个人看法
2006/10/09 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
Python切片操作深入详解
2018/07/27 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
2016年大学生实习单位评语
2015/12/01 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
golang 实用库gotable的具体使用
2021/07/01 Golang