collections –集合和容器类型

警告

虽然这个基于 MicroPython 的库可能可用于某些 CircuitPython 版本,但它不受支持,并且其功能在未来可能会发生重大变化。随着 CircuitPython 的不断发展,它可能会更改以更紧密地符合相应的标准 Python 库。如果您依赖它当前提供的任何非标准功能,您以后可能需要更改您的代码。

该模块实现了相应 CPython 模块的 一个子集,如下所述。有关更多信息,请参阅原始 CPython 文档: collections.

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

班级

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

双端队列(双端队列)是一个类似列表的容器,支持 O(1) 从双端队列的任一侧追加和弹出。使用以下参数创建新的双端队列:

  • iterable必须是空元组,并且新的双端队列创建为空。

  • 必须指定maxlen 并且双端队列将被限制在这个最大长度内。一旦双端队列已满,任何添加的新项目都会丢弃另一端的项目。

  • 可选标志可以是 1 以在添加项目时检查溢出。

除了支持boollen之外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