將Python字典(dict)裡的key與value對調的方法

有個正在學習的Python的學生,目前進度來到了字典(dict)。當她進行課後的題目練習時,其中有一題要她找出字典中最貴的東西,題目中的字典為:

fruits = {“西瓜”:34,”木瓜”:63,”文旦”:81,”蘋果”:102,”鳳梨”:60,”橘子”:73}

她第一時間想到如果能直接由value(值)查詢key(鍵)就能快速完成這題,但字典只能由key查詢value,於是跑來問我有沒有方法可以反過來由value查詢key。

我回答應該沒有,但我知道如何將字典裡的key與value對調的方法,同樣也能達到妳想要的目的;而且對調的方法不難,只需要一行程式碼就能搞定。

題外話,如果是我的話並不會選擇這種方法來解題,因為Python字典不能存在相同的key,萬一遇到好幾個value是一樣的,對調後只會剩下一個。不過畢竟是學生自己動腦想到的方法,除了提醒她注意上述這點外,還是教她key與value對調的方法當作嘉許。

1. 假設原字典名稱是dic,對調後的字典名稱是new_dic,將字典裡的key與value對調的程式碼則如下方所示;對,就這麼一行,別懷疑。

new_dic = {v : k for k, v in dic.items()}

2. 這裡使用上述的那個練習題來示範一下。如果想對調「fruits」字典中的key與value,新字典取名為new_fruits,那麼程式碼就是:

new_fruits = {v : k for k, v in fruits.items()}

3. 實際執行程式確認一下是否真的對調完成。

4. 題目要求找出最貴的水果,可以先用 new_fruits.keys() 將new_fruits的key都拿出來,再用 list() 將key放進List裡(這邊將List命名為key2list)。

5. 變成List就方便多了,只要用 max(key2list) 就能找出最大的數字,再將 max(key2list) 擺進 new_fruits[] 裡就能查詢出對應的水果啦。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *