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的一些用法分享
Oct 07 Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
Python实现中一次读取多个值的方法
Apr 22 Python
python3实现磁盘空间监控
Jun 21 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
python迷宫问题深度优先遍历实例
Jun 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
php遍历目录viewDir函数
2009/12/15 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
Document 对象的常用方法
2009/07/31 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
internal修饰符起什么作用
2013/12/16 面试题
园林施工员岗位职责
2013/12/11 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
出国签证在职证明
2014/09/20 职场文书
中学校园广播稿
2015/08/18 职场文书
八年级语文教学反思
2016/03/03 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL