序列 (tuple, list 或 range 的实例) 只可进行类型内部的比较,range 还有一个限制是不支持次序比较。 以上对象的跨类型一致性比较结果将是不相等,跨类型次序比较将引发 TypeError。
序列比较是按字典序对相应元素进行逐个比较。内置容器通常设定同一对象与其自身是相等的。 这使得它们能跳过同一对象的相等性检测以提升运行效率并保持它们的内部不变性。
- 两个字典 (dict 的实例) 若要相等,必须当且仅当它们具有相同的 (键, 值) 对。 键和值的一致性比较强制规定自反射性。次序比较 (
<
,>
,<=
和>=
) 将引发 TypeError。 - 集合 (set 或 frozenset 的实例) 可进行类型内部和跨类型的比较。它们将比较运算符定义为子集和超集检测。
dict(a=1, b=2) == {"b": 2, "a": 1}
set([1, 2]) == {2, 1}