iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 10
1

前面提到串列是儲存一個個物件,並以索引值去存取,那如果我想要取出特定資料,我就要先知道它在串列中是第幾個之後,再把它取出來,這樣是不是非常麻煩呢?所以這時候Dict就派上用場拉~

字典 (Dict)

字典的結構與串列非常相似,不過它是採用鍵值來尋找資訊,也就是以「鍵-值」方式儲存,如此我們就可以使用「鍵」來取得值了。字典式將元素置於大括弧內,其語法為:

字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3....}
dict1 = {"蘋果":30, "橘子":20, "水梨":50}
print(dict1["水梨"])

50

字典是種映射形式的型別,從「鍵(key)」映射到「值(value)」,值可以是任何型別的物件,例如字串、整數、串列、或另一個字典,鍵則是不可變物件,如字串、整數、tuple。由於字典是使用鍵做為索引取得值,因此「鍵」必須是唯一的,「值」則可以重複,若「鍵」重複的話,前面的「鍵」會被覆蓋掉只留後者。例子如下:

dict1 = {"Sean":[0,1,2], 44:20, (40,55,70):{'a':2,'b':35}}
print(dict1[(40,55,70)])      #此鍵為tuple
{'a':2,'b':35}                #此值為dict

dict2 = {"蘋果":30, "橘子":20, "水梨":50, "蘋果":60}
print(dict2["蘋果"])
60                  #被後者覆蓋

在了解它的基本建構後,就可以來進行簡單操作了~
字典是可修改的。

dict1 = {"蘋果":30, "橘子":20, "水梨":50}
dict1["水梨"]=100
print(dict1["水梨"])

100

字典可以增加元素。

dict1 = {"蘋果":30, "橘子":20, "水梨":50}
dict1["芭樂"]=80
print(dict1)

{'蘋果': 30, '橘子': 20, '水梨': 50, '芭樂': 80}

當然也能刪除。

dict1 = {"蘋果":30, "橘子":20, "水梨":50}
del dict1["蘋果"]
print(dict1)

{'橘子': 20, '水梨': 50}

接下來是進階操作的部分,這邊一樣也挑幾個常見的做說明,在文章最後一樣會列出所有方法歐~

keys、values及items方法

字典的keys()方法可取得所有「鍵」組成的組合,資料型態為dict_keys;values()方法可取得所有「值」組成的組合,資料型態為dict_values,而最後items()方法是取得所有「鍵-值」的組合,資料型態為dict_items,那麼看看例子吧:

>>>dict1 = {"蘋果":30, "橘子":20, "水梨":50}
>>> dict1.keys()                              #keys()
dict_keys(['蘋果', '橘子', '水梨'])
>>> dict1.values()                            #values()
dict_values([30, 20, 50])
>>> dict1.items()                             #items()
dict_items([('蘋果', 30), ('橘子', 20), ('水梨', 50)])

可以將他們轉為字串做應用:

dict1 = {"蘋果":30, "橘子":20, "水梨":50}
list_item = list(dict1.keys())
list_price = list(dict1.values())
for i in range(len(list_item)):
    print("%s的價格為%d元"%(list_item[i],list_price[i]))

#輸出結果
蘋果的價格為30元
橘子的價格為20元
水梨的價格為50元

最後再提醒一點,dict的鍵值配對並無順序,就算相同程式碼,放到不同版本的Python、或不同電腦執行,其結果所顯示的順序不一定相同,說不定每次都不一樣,總言之,dict字典只提供鍵映射到值這樣的關係,並不保證順序性


下表列出字典的常用方法,以供未來參考:

方法 描述
dict.keys() 傳回dict中所有鍵的元素組合
dict.values() 傳回dict中所有值的元素組合
dict.items() 傳回dict中所有「鍵-值」的元素組合
dict.clear() 刪除dict的所有項目
dict.copy() 複製dict
dict.pop(k) 刪除鍵k的鍵值對,傳回k所對應的值
dict.get(k[,y]) 返回鍵k的值,若未找到該鍵傳回none,若提供y,未找到k時傳回y
dict.setdefault(k[,y]) 與get()類似,若鍵k不存在就以參數的「鍵-值」建立新元素

參考資料

  • 書名-輕鬆學Python3 /孫宏明-編著
  • 書名-Python初學特訓班 /文淵閣工作室-編著
  • 書名-Python程式設計入門 /葉難-編著

上一篇
Day09-List的進階操作與用法
下一篇
Day11-集合 Set
系列文
Python 30天學習日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言