繼續在資料結構的世界裡,把一堆各式 type 的資料裝在一起的方式,除了 list 和 string, tuple 以外,還可以用 dictionary
Dictionary 跟上述三種不同的地方在於,那三種都是把資料用水平一串(一條?)的概念來呈現,像是 index 也本身就是排排站的意味,但 dictionary 是索引的概念
Dictionary 是 Python 內建的特殊資料結構,(在其他語言可能要用其他方式或自己寫才能達到相同的效果),所有東西都是一對一對的,像字典一樣,每一個詞都有一個解釋,這個詞概念的東西稱為 key ,而配對到的解釋稱為 value
長這樣
其中 "twelve"
, "six"
, 和 "twenty"
都是 key,type 是 string 的 key
12
, 6
, 和 20
是 value,type 是 int 的 value
每一個 key 都配對到一個 value,key 不能重複,但 value 可以
要拿到一個 dictionary 裡面的值,不是像 list 一樣用 index by index 地查找,而是透過 key 來 directly access,像是
如果 six 這個 key 不存在,就會獲得 KeyError
為了避免程式執行時出現不必要的 error 讓整個程式中斷,一個安全的 access dictionary 方式是透過 dictionary.get()
這個 function,如果 .get()
括號內的 key 存在,這個 function 就會回傳該 key 的 value,如果不存在,則回傳 None
試試:
另一個 .get()
的酷用法是可以指定如果 key 不存在要回傳什麼,試試:
當然 dictionary 的創建不需要在一開始就指定好,也可以跟 list 的 .append()
一樣慢慢擴增,試試:
另外,像所有其他資料結構一樣,dictionary 也可以用 loop 去 access,想想會印出什麼然後試試:
更進階的可以試試:
這樣就可以看出許多 dictionary 的特質囉
來用 turtle 畫折線圖吧,先做一個 dictionary,讓 key 是 x 座標,value 是 y 座標,再讓烏龜畫出來吧
字典是個好東西,特別是翻譯的時候,現在已知有兩個 list – 英文與西班牙文的單字列表,並且已知這兩個 list 的單字順序是一樣的,如下
目標是知道這兩個語言,對於一樣意思的單字,字母數是否一樣,最後得到哪一個語言背單字比較容易的結論,所以要怎麼做到呢
https://runestone.academy/ns/books/published/thinkcspy/Dictionaries/toctree.html