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