简单讲解Python编程中namedtuple类的用法

作者:TypingQuietly 时间:2022-05-30 23:32:18 

Python的Collections模块提供了不少好用的数据容器类型,其中一个精品当属namedtuple。

namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。

在python中,传统的tuple类似于数组,只能通过下标来访问各个元素,我们还需要注释每个下标代表什么数据。通过使用namedtuple,每个元素有了自己的名字,类似于C语言中的struct,这样数据的意义就可以一目了然了。当然,声明namedtuple是非常简单方便的。
代码示例如下:


from collections import namedtuple

Friend=namedtuple("Friend",['name','age','email'])

f1=Friend('xiaowang',33,'xiaowang@163.com')
print(f1)
print(f1.age)
print(f1.email)
f2=Friend(name='xiaozhang',email='xiaozhang@sina.com',age=30)
print(f2)

name,age,email=f2
print(name,age,email)

类似于tuple,它的属性也是不可变的:


>>> big_yellow.age += 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute

能够方便的转换成OrderedDict:


>>> big_yellow._asdict()
OrderedDict([('name', 'big_yellow'), ('age', 3), ('type', 'dog')])

方法返回多个值得时候,其实更好的是返回namedtuple的结果,这样程序的逻辑会更加的清晰和好维护:


>>> from collections import namedtuple
>>> def get_name():
...   name = namedtuple("name", ["first", "middle", "last"])
...   return name("John", "You know nothing", "Snow")
...
>>> name = get_name()
>>> print name.first, name.middle, name.last
John You know nothing Snow

相比tuple,dictionary,namedtuple略微有点综合体的意味:直观、使用方便,墙裂建议大家在合适的时候多用用namedtuple。

标签:Python,namedtuple
0
投稿

猜你喜欢

  • Python要求O(n)复杂度求无序列表中第K的大元素实例

    2023-07-30 13:18:01
  • Python常见异常的处理方式浅析

    2022-05-14 17:32:37
  • python实现二分查找算法

    2022-08-30 21:58:54
  • 作符合用户体验的input输入框

    2008-01-10 12:21:00
  • ASP导出Excel数据的四种办法

    2007-08-26 18:32:00
  • python tkinter实现学生信息管理系统

    2021-11-01 18:46:16
  • Python 使用多属性来进行排序

    2023-11-10 21:15:07
  • python之模拟鼠标键盘动作具体实现

    2022-12-23 10:51:29
  • Python+AutoIt实现界面工具开发过程详解

    2023-06-17 20:39:47
  • asp如何创建Word 文件?

    2009-11-14 20:47:00
  • python 查看cpu的核数实现

    2023-01-02 21:09:31
  • Python实现根据Excel生成Model和数据导入脚本

    2022-01-10 09:58:12
  • js鼠标滑过图片震动特效的方法

    2023-08-23 21:38:50
  • PID原理与python的简单实现和调参

    2021-08-13 13:27:36
  • Python判断两个list是否是父子集关系的实例

    2021-08-17 07:16:18
  • 如何提升JavaScript的运行速度(函数篇)

    2010-05-17 13:27:00
  • Python实现求最大公约数及判断素数的方法

    2021-06-13 02:20:20
  • JS获取网页中HTML元素的几种方法分析

    2007-10-12 13:08:00
  • Python中单线程、多线程和多进程的效率对比实验实例

    2022-12-01 09:25:55
  • Python从list类型、range()序列简单认识类(class)【可迭代】

    2022-09-09 14:07:20
  • asp之家 网络编程 m.aspxhome.com