python tips 作為dict的key的類

2022-08-15 16:09:17 字數 923 閱讀 1303

python的dict由hash實現,解決hash衝突的方法是二次探查法。hash值相同的元素會形成鍊錶。所以dict在查詢key時,首先獲取hash值,直接得到鍊錶的表頭;而後在鍊錶中查詢等於key的值。

所以要使乙個物件的例項能夠作為dict的key值,一般需要實現__hash__和__eq__兩個方法。

1

classa:2

def__hash__

(self):

3return 2

45 a =a()

6 b =a()

7 d =

8if b ind:9

print

(d[b])

10else:11

print("

b is not in d

")

1 b is

notin d

1

classa:2

def__hash__

(self):

3return 245

def__eq__

(self, other):

6return

true

78 a =a()

9 b =a()

10 d =

11if b in

d:12

print

(d[b])

13else:14

print("

b is not in d

")

1 0

1. 要作為dict的key,需要能夠求hash值(key為不可變物件),需要能比較(是否相等)

2. 對於類來說,例項求hash需要實現__hash__,比較是否相等需要實現__eq__(預設比較引用,不同例項的引用總是不同)

python tips 類的專有屬性

例項通常能夠呼叫類的屬性,但是有些屬性是類專有的,例項無法呼叫。例項呼叫方法時查詢屬性時,首先在自己的 dict 中找,找不到去類中找,在類中能夠找到的屬性都位於dir cls 中,如果類的某些屬性不在dir cls 中,那麼例項無法訪問。1 classa 2 pass 34 a.name the ...

python 中字典(dic)的用法

dic 字典使用key values方式,也就是鍵 值的方式 print dic james for key in dic 取出字典中的key值 print key for key in dic.keys 也可以通過這種將key值取出來 print key for values in dic 這說明...

python中字典 dic的操作

d 獲取成員 print d name python的優雅 有就返回,沒有預設返回none,可以設定預設值 print d.get nm 預設值 設定成員 存在就更新 d age 30 不存在時就新增 d weight 80 更新,存在的鍵就更新,不存在的鍵就新增 d.update 刪除元素 del...