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装饰器 免去调用父类构造函数的麻烦
May 18 Python
python正则表达式re模块详解
Jun 25 Python
Python中的字典遍历备忘
Jan 17 Python
Python基础入门之seed()方法的使用
May 15 Python
Python 数据结构之旋转链表
Feb 25 Python
Python中进程和线程的区别详解
Oct 29 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
conda安装tensorflow和conda常用命令小结
Feb 20 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
php自动注册登录验证机制实现代码
2011/12/20 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python随机生成指定长度密码的方法
2015/04/04 Python
python实现年会抽奖程序
2019/01/22 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python3使用GUI统计代码量
2019/09/18 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
煤矿开采专业求职信
2014/07/08 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
创业计划书之酒厂
2019/10/14 职场文书
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android