如何检查 Python 集合是否已订购?

ber*_*ers 4 python collections

我想检查一个传递给函数的集合是否是有序的,即元素的顺序是固定的。(我不是在谈论“排序”。)

  • Aset未排序。
  • lists 和tuples 是有序的。

是否有我可以使用的通用测试?

sch*_*ggl 5

有序非映射集合通常实现序列协议(其主要特点是通过__getitem__方法提供索引访问)并且可以针对collections.abc.Sequence以下内容进行类型测试:

from collections.abc import Sequence

isinstance(set(), Sequence)
# False
isinstance(list(), Sequence)
# True
isinstance(tuple(), Sequence)
# True
Run Code Online (Sandbox Code Playgroud)

如果有人坚持应该包含有序映射,即 a dict从 Python 3.7 开始订购),您可以针对collections.abc.Reversible以下情况进行测试:

isinstance(set(), Reversible)
# False
isinstance(list(), Reversible)
# True
isinstance(tuple(), Reversible)
# True
isinstance(dict(), Reversible)
# True
Run Code Online (Sandbox Code Playgroud)