1.健必须是可散列的。
用户自己实现的对象默认都是可散列的,因为id()不同。一个可散列对象应该有以下属性:
支持hash()函数,通过hash()方法得到的散列值是不变的。
可以通过eq()方法来检测相等性
如果a == b,那么hash(a) == hash(b)
2.字典内存开销大
因为字典是由散列表实现的,散列表中肯定对出现一些稀疏,这就导致了字典会占用一些空间。当然和字典的速度相比这点内存是可以忽略的。
3.字典的健顺序不是唯一的
由于散列表在插入或者读取时候可能会产生散列冲突,这就导致了字典中健的顺序不是唯一的,但是不管字典健的顺序怎么变,如果两个字典健值对都一样那么这两个字典都是相等的:
a = {
"1":1,
"2":3,
"3":4,
"4":4
}
b = {
"3":3,
"4":4,
"1":1,
"2":2
}
a == b
True