collections
–集合和容器类型¶
该模块实现了相应 CPython 模块的 一个子集,如下所述。有关更多信息,请参阅原始 CPython 文档: collections
.
该模块实现了高级集合和容器类型来保存/累积各种对象。
班级¶
-
collections.
deque
(iterable, maxlen[, flags])¶ 双端队列(双端队列)是一个类似列表的容器,支持 O(1) 从双端队列的任一侧追加和弹出。使用以下参数创建新的双端队列:
iterable 必须是空元组,并且新的双端队列创建为空。
必须指定maxlen并且双端队列将被限制在这个最大长度内。一旦双端队列已满,任何添加的新项目都会丢弃另一端的项目。
可选标志可以是 1 以在添加项目时检查溢出。
除了支持
bool
和len
之外, deque 对象还有以下方法:-
deque.
append
(x)¶ 将x添加到双端队列的右侧。如果启用了溢出检查并且没有更多空间,则引发 IndexError。
-
deque.
popleft
()¶ 从双端队列的左侧移除并返回一个项目。如果不存在任何项目,则引发 IndexError。
-
collections.
namedtuple
(name, fields)¶ 这是创建具有特定名称和字段集的新命名元组类型的工厂函数。namedtuple 是 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]
-
collections.
OrderedDict
(...)¶ dict
type 子类,它记住并保留添加的键的顺序。当有序的 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