學習筆記,有錯必糾
反向查找
給定一個字典d,找到鍵k對應的值v=d[k]非常容易,但是如果我們有值v,而想到鍵k該咋整呢?
因為可能存在多個鍵k映射到同一個值v上,是以,我們可以挑選其中一個鍵k作為傳回值,或者建立一個清單儲存所有的鍵k。
python實作:
def reverse_lookup(d, v):
for k in d:
if d[k] == v:
return k
raise LookupError()
d = {'a':1, 'c':2, 'e':2, 'f':1, 't':1}
print(reverse_lookup(d, 2))
輸出:
c
反轉字典
構造一個反轉字典函數,将目标字典中具有相同值的鍵放在一個清單中,并将其作為新字典的值,新字典的鍵就是目标字典的值。
python實作:
def invert_dict(d):
inverse = dict()
for key in d:
val = d[key]
if val not in inverse:
inverse[val] = [key]
else:
inverse[val].append(key)
return inverse
d = {'a':1, 'c':2, 'e':2, 'f':1, 't':1}
print(invert_dict(d))
輸出:
{1: ['a', 'f', 't'], 2: ['c', 'e']}
散清單
我們在之前的BLOG裡學過,字典是通過散清單的方式實作的,這意味着鍵必須是可散列的。
散列是一個函數,接受(任意類型)的值并傳回一個整數,字典使用這些被稱為散列值的整數來儲存和查找鍵值對。