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

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

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

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

回答

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

from collections.abc import Sequence

isinstance(set(), Sequence)
# False
isinstance(list(), Sequence)
# True
isinstance(tuple(), Sequence)
# True

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

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


以上是如何检查Python集合是否已订购?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>