美文网首页Python点滴程序员Python 运维
Python namedtuple 用用更健康

Python namedtuple 用用更健康

作者: TypingQuietly | 来源:发表于2016-03-09 17:57 被阅读4004次

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

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

>>> from collections import namedtuple
>>> Animal = namedtuple('Animal', 'name age type')
>>> big_yellow = Animal(name="big_yellow", age=3, type="dog")
>>> big_yellow
Animal(name='big_yellow', age=3, type='dog')
>>> big_yellow.name
'big_yellow'

从上面的列子可以看到,有了namedtuple,通过属性访问数据能够让我们的代码更加的直观更好维护(相比索引访问的话),使用pycharm这样的IDE,编码的时候也会有相应的智能提示,进一步确保不犯低级错误。

类似于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

相比tupledictionarynamedtuple略微有点综合体的意味:直观、使用方便,墙裂建议大家在合适的时候多用用namedtuple。
更多相关的介绍可以查看官方文档。

参考资料:

https://docs.python.org/2/library/collections.html#collections.namedtuple

相关文章

  • Python namedtuple 用用更健康

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

  • 用用更健康

    今天听了康妈转播的:“有之以为利,无之以为用。”有一些自己的感受。有之以为利,充分发挥其自身的价值!很多不喜欢一种...

  • Python collections模块中的几种数据结构

    Python collections模块中的几种数据结构 namedtuple namedtuple 是一种类似于...

  • Python namedtuple

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

  • 你不能低估的Python数据结构Namedtuple(一)

    本文将讨论python中namedtuple的重点用法。我们将由浅入深的介绍namedtuple的各概念。您将了解...

  • 你不能低估的Python数据结构Namedtuple(二)

    上篇你不能低估的Python数据结构Namedtuple(一)讲了namedtuple的一些基本用法,本篇继续。 ...

  • 原理们,用用更健康!

    你中枪了吗 在我们生活和工作的各个方面都有其原则,有生活原则,有工作原则,有感情原则,有思维原则,等等等等,而这些...

  • python 使用 namedtuple

    有人说数据结构才是编程的灵魂,可见数据结构的重要性。 一、为什么要使用namedtuple? python的tup...

  • Python tuple & namedtuple

    tuple的特点 tuple的不可变性(immutable),为其带来了若干特点 性能优于list,因为其在编译期...

  • python模块---collections

    collections是python内置的模块,提供常用的方法有namedtuple,defaultdict,de...

网友评论

  • 817c4ae99fa9:请问为什么有的带[]
    有的时候后面不带[]
    应该如何区分
    llicety:看源码你就明白了,其实没什么区别,不加要不传递的是字符串,要不是一个列表,也就是带[],如果是字符串,会调用split()函数转换成列表,也就是[],

    def namedtuple(typename, field_names, verbose=False, rename=False):
    if isinstance(field_names, basestring):
    field_names = field_names.replace(',', ' ').split()
    field_names = map(str, field_names)

本文标题:Python namedtuple 用用更健康

本文链接:https://www.haomeiwen.com/subject/mbftlttx.html