如何检查Python集合是否已排序



我想检查传递给函数的集合是否有序,也就是说,元素的顺序是固定的。(我说的不是"排序"。(

  • 未订购set
  • 对CCD_ 2s和CCD_ 3s进行排序

我可以使用通用测试吗?

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

from collections.abc import Sequence
isinstance(set(), Sequence)
# False
isinstance(list(), Sequence)
# True
isinstance(tuple(), Sequence)
# True

如果坚持应该包括有序映射,即dict(从Python 3.7开始排序(,则可以针对collections.abc.Reversible:进行测试

isinstance(set(), Reversible)
# False
isinstance(list(), Reversible)
# True
isinstance(tuple(), Reversible)
# True
isinstance(dict(), Reversible)
# True

最新更新