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

相關文章
相關標籤/搜索