Python Hashtable的理解

       一个对象当其生命周期内的hash值不发生改变,并且能够跟其余对象进行比较时,这个对象就是Hashtable的。二者Hashtable的对象只有具备相同的hash值时才能判断为相同的对象。html

  1.      python中的基本类型都是Hashtable,好比str,bytes,数字类型等;
  2. 用户自定义的类型默认状况下都是hashtable,由于他们的hash值就是他们的id()值;
  3. frozenset始终都是hashtable的,由于他们全部的项目都是被定义成hashtable的;
  4. 只有当元组内的全部项都是hashtalbe时,元祖才是hashtalbe.具体请参见下面的例子

 

if __name__ == '__main__':
    tt = (1,2, (30, 40))
    print(hash(tt))

    tf = (1, 2, frozenset([30, 40]))
    print(hash(tf))

    tl = (1, 2, [30, 40])
    print(hash(tl))

 

运行的结果以下:python

8027212646858338501htm

-4118419923444501110对象


Traceback (most recent call last):生命周期

File "C:/Users/Administrator/PycharmProjects/collections/abc111.py", line 19, in <module>ip

   print(hash(tl))
TypeError: unhashable type: 'list'hash

相关文章
相关标签/搜索