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代码做configure文件
Jul 20 Python
python实现数独算法实例
Jun 09 Python
Python操作串口的方法
Jun 17 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
pandas.cut具体使用总结
Jun 24 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
TensorFLow 数学运算的示例代码
Apr 21 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实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python简单实例训练(21~30)
2017/11/15 Python
在python中安装basemap的教程
2018/09/20 Python
python安装scipy的方法步骤
2019/06/26 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
python实现银行实战系统
2020/02/26 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
白酒市场开发计划书
2014/01/09 职场文书
校园广播稿500字
2014/02/04 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
个人简历求职信范文
2015/03/20 职场文书
KTV员工管理制度
2015/08/06 职场文书
追悼会答谢词范文
2015/09/29 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书