python collections 模块

Posted 皮克皮克

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python collections 模块相关的知识,希望对你有一定的参考价值。

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 模块的主要内容,如果未能解决你的问题,请参考以下文章

python 必须模块collections

Python笔记五(collections模块)

Python 常用模块 -- collections模块,time模块,random模块,os模块,sys模块

金蝶handler中 collection 代码片段理解

常用python日期日志获取内容循环的代码片段

python全栈开发第九篇Python常用模块一(主要是re正则和collections)