對字典的一些常規操作:遍歷字典並列印,字典反向查詢,反轉字典
阿新 • • 發佈:2019-02-05
操作1:如何分別得到key,value集合:
方法dict.keys() 、dict .values() 分別得到鍵 、值的集合物件,使用list()函式可將該物件型別變為list。
操作2:如何迴圈並列印一個字典裡的鍵值對:
c_2 = histrogram_2(s)
for key in sorted(s):
print(key,c_2[key])
操作3:如何迴圈並列印一個字典裡的鍵值對:
目標:通過V找K
思路:遍歷整個字典,當找到對應的value時返回key
def lookup(dic, value): for k in dic: if dic[k] == value: return key raise LookupError() print(lookup(c_2, 42))
操作4:反向查詢
目標:通過value查詢key值
思路:定義函式,形參兩個:字典和值,遍歷整個字典尋找尋找是否有dict(key) == value,若存在返回第一個key,否則用raise語句生成一個異常。
def reverse_lookup(dic, value):
for k in dic:
if dic[k] == value:
return key
raise LookupError()
print(lookup(c_2, 42)) # 在c_2字典中去尋找42對應的KEY是啥
改良:反向查詢所有的key值
def reverse_lookup2(dic,value): keys = [] for k, v in dic.items(): if v == value: keys.append(k) return keys
反向查詢的速度會遠遠慢於正向查詢,由於字典的keys是通過雜湊演算法產生散列表,因此正向查詢採取二分法查詢會非常快,而反向查詢則遍歷了整個字典,當字典非常大時,對程式的效能影響會特別大。
操作5:反轉字典
目標:
將一個字典裡的keys 與 values對調
思路:
1、定義函式,一個形參為字典
2、函式內定義一個新的反轉字典
3、通過for迴圈將鍵值對調
①Q1.字典內key唯一,value不唯一,對調後一個value可能對應多個值
②Q2.如何實現鍵值對調
4、返回反轉字典
def invert_dict(d): inverse_d = dict() for k in d: # 對字典使用for loop,會直接遍歷字典的所有鍵 if d[k] not in inverse_d: inverse_d[d[k]] = [k] # 第一次新建鍵值對,value型別為list,並存入inverse_d中 elif d[k] in inverse_d: inverse_d[d[k]].append(k) # 將原字典的key直接加入list中 return inverse_d