散列

作者: 剑侠飞蓬 | 来源:发表于2018-12-26 15:09 被阅读0次

    散列值与相等性

    等值对象的散列值必须相等。散列相等未必等值。

    散列表算法

    散列表算法

    其他说明

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

    相关文章

      网友评论

          本文标题:散列

          本文链接:https://www.haomeiwen.com/subject/noshlqtx.html