可散列的数据类型[2021-03-29]

原子不可变数据类型(str、bytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根据其定义,frozenset里只能容纳可散列类型。对于元组,只有当一个元组包含的所有元素都是可散列类型的情况下,它才是可散列的。

一般来讲,用户自定义的类型的对象都是可散列的,散列值就是它们的id()函数的返回值,所以所有这些对象在比较的时候都是不相等的。如果一个对象实现了eq方法,并且在方法中用到了这个对象的内部状态的话(重写的eq方法可能比较的是对象中成员变量的值而不是id函数返回的内存地址),那么只有当所有这些内部状态都是不可变的情况下,这个对象才是可散列的。

你可能感兴趣的:(可散列的数据类型[2021-03-29])