collections – 集合和容器类型

This module implements a subset of the corresponding CPython module, as described below. For more information, refer to the original CPython documentation: collections

该模块实现了高级的集合和容器类型,用于保存/累积各种对象。

class collections.deque(iterable, maxlen[, flags])

Deques(双端队列)是一种类似于列表的容器,支持从deque的任一端进行 O(1)的附加和弹出操作。可以使用以下参数创建新的deque:

  • iterable 是在创建时用于填充 deque 的可迭代对象。它可以是一个空元组或列表,用于创建一个初始为空的 deque。

  • 必须指定 maxlen,deque将被限制为最大长度。一旦deque已满,添加的任何新项都将从另一端丢弃项。

  • 可选的 flags 可以为 1,以检查添加项时是否溢出。

Deque 对象支持 boollen、迭代以及下标加载和存储。它们还具有以下方法:

append(x)

x 添加到 deque 的右侧。如果启用了溢出检查且队列没有更多空间,将引发 IndexError

appendleft(x)

x 添加到 deque 的左侧。如果启用了溢出检查且队列没有更多空间,将引发 IndexError

pop()

从 deque 的右侧移除并返回一个项。如果队列为空,将引发 IndexError

popleft()

从 deque 的左侧移除并返回一个项。如果队列为空,将引发 IndexError

extend(iterable)

通过将 iterable 中的所有项追加到 deque 的右侧来扩展 deque。如果启用了溢出检查且 deque 没有更多空间,将引发 IndexError

collections.namedtuple(name, fields)

这是一个工厂函数,用于创建具有特定名称和字段集的新命名元组类型。命名元组是tuple 的子类,它允许不仅通过数字索引,而且还可以使用带有符号字段名称的属性访问语法来访问其字段。字段是指定字段名称的字符串序列。为了与 CPython 兼容,它也可以是一个带有空格分隔的字段名称的字符串(但这样效率较低)。使用示例:

from collections import namedtuple

MyTuple = namedtuple("MyTuple", ("id", "name"))
t1 = MyTuple(1, "foo")
t2 = MyTuple(2, "bar")
print(t1.name)
assert t2.name == t2[1]
class collections.OrderedDict(...)

dict 类型的子类,它记住并保留添加的键的顺序。当有序字典进行迭代时,键/项将以它们添加的顺序返回:

from collections import OrderedDict

# To make benefit of ordered keys, OrderedDict should be initialized
# from sequence of (key, value) pairs.
d = OrderedDict([("z", 1), ("a", 2)])
# More items can be added as usual
d["w"] = 5
d["b"] = 3
for k, v in d.items():
    print(k, v)

输出:

z 1
a 2
w 5
b 3