码迷,mamicode.com
首页 > 编程语言 > 详细

python collections 模块

时间:2019-10-10 12:53:32      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:包含   int   无效   列表   rabl   通过   assm   继承   标识符   

namedtuple

collections.namedtuple(typename, filed_name, *, rename=False, module=None)

创建一个以 typename 命名的 tuple 子类,这个子类用于创建类元组对象,这些对象可以像元组一样被索引和迭代。

field_name: 指定 namedtuple 的字段名,可以是列表,可以是用空格或逗号隔开的字符串。

rename: field_name 中无效的标识符(字符,数字,下划线,并且不以下划线或数字开头,不与内置变量名冲突)将被自动替换为下划线加索引(例:_1),

module: 设置__module__的值,默认为 ‘__main__‘

from collections import namedtuple

Point = namedtuple(Point, [x, y])
a = Point(1, 2)

输出:

>>> a[0]
1
>>> a[1]
2
>>> a.x
1
>>> a.y
2
>>> c,d = a
>>> c, d
(1, 2)

namedtuple 除了继承 tuples 的方法外,还有3个额外的方法和2个额外的属性:

classmethod  somenamedtuple._make(iterable)

用已存在的列表或可迭代对象创建 namedtuple 实例:

>>> t = [1, 2]
>>> Point._make(t)
Point(x=1, y=2)

somenamedtuple._asdict()

将 namedtuple 转变为 OrderDict

>>> p = Point(x=11, y=22)
>>> p._asdict()
OrderedDict([(x, 11), (y, 22)])

somenamedtuple._replace()

替换属性值,返还一个新的对象

>>> p = Point(x=11, y=22)
>>> p._replace(x=33)
Point(x=33, y=22)

somenamedtuple._source()

somenamedtuple._fields

返回一个元祖,包含所有的属性

>>> p._fields            # view the field names
(x, y)
>>> Color = namedtuple(Color, red green blue)
>>> Pixel = namedtuple(Pixel, Point._fields + Color._fields)
>>> Pixel(11, 22, 128, 255, 0)
Pixel(x=11, y=22, red=128, green=255, blue=0)

将字典转变为 namedtuple:

>>> d = {x: 11, y: 22}
>>> Point(**d)
Point(x=11, y=22)

默认值可以通过 _replace() 来重新定义,例:

>>> Account = namedtuple(Account, owner balance transaction_count)
>>> default_account = Account(<owner name>, 0.0, 0)
>>> johns_account = default_account._replace(owner=John)
>>> janes_account = default_account._replace(owner=Jane)
# _replace()返回一个新的实例

 

python collections 模块

标签:包含   int   无效   列表   rabl   通过   assm   继承   标识符   

原文地址:https://www.cnblogs.com/BeautifulWorld/p/11647198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!