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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
pyqt4教程之messagebox使用示例分享
Mar 07 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Python文件和流(实例讲解)
Sep 12 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
Python猴子补丁知识点总结
Jan 05 Python
PyQt实现计数器的方法示例
Jan 18 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实现jQuery扩展函数
2009/10/30 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
python实现控制COM口的示例
2019/07/03 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
Python中求对数方法总结
2020/03/10 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
python如何停止递归
2020/09/09 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
机电一体化自荐信
2013/12/10 职场文书
校本教研活动总结
2014/07/01 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
2014年度工作总结报告
2014/12/15 职场文书
外出听课学习心得体会
2016/01/15 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技