散列值与相等性
等值对象的散列值必须相等。散列相等未必等值。
散列表算法
散列表算法其他说明
- key必须是可散列的。
- 可散列需要有hash和eq做支撑,并且保证==相等时一定有hash相等
- 在对象的生命周期内,散列值会保持不变
- 原子不可变类型(str,bytes和数值类型)可散列
- frozenset可散列
- tuple当且仅当所有元素可散列时,可散列
- 用户自定义类型对象可散列,值为其id()
- 字典造成内存上的开销
- Python会设法保证三分之一的bucket是空的,达到阈值时会被复制到一个更大的空间
- 当记录数量巨大时,用namedtuple是比json格式更好的节约空间的选择
- 自定义类型中,用slots将实例的存储方式由dict改变成tuple,但是注意,优化是可维护性的对立面。
- 不要在迭代过程中对字典进行更改。
网友评论