iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Software Development

闖進Python異世界系列 第 8

[Day 08] 闖進Python異世界 - Dictionary

  • 分享至 

  • xImage
  •  

字典Dictionary 簡稱 Dict。在 Python 以外的語言,大多稱為 map,但是 Python 的 map 已經被作為其他用途,所以我們用 Dict 來稱呼今天的主題。


什麼是字典?

有了列表的概念後,我們可以這樣來解釋字典:
列表的抽屜號碼是數字(0 ~ n-1),而字典的抽屜號碼可以是數字、字串等。

舉例來說,抽屜號碼是 'Name',抽屜放的是 'Bob'


前進語法

列表最顯眼的地方是[]字典最顯眼的地方是{}!
所有要被放進字典的元素都會被放在大括號 {} 之內。

因為字典的抽屜號碼可以隨意取名字,所以我們要特別註明。
抽屜號碼稱為 key,抽屜內容稱為 value
表示一組元素的語法是 key : value;表示一個字典的語法是 {key1 : value1 , key2 : value2 , ...}

其中,key 只能是數字、字串等無法被改變的資料型態,value 可以是任何資料型態。

舉一個例子:表示一個學生的基本資料

stu = {
    'Name' : 'Bob',
    'age' : 17,
    'gpa' : 3.6
}

接下來就從三個方向來看字典吧!

  1. length 長度(字典有幾組元素)
  2. key 鍵值(抽屜號碼)
  3. value 值(抽屜內容)

Length 長度

想知道一個字典包含幾個元素並不難,用數的就好!
{'isValid' : True, 3 : 0.01} 這個列表很明顯就有二個元素,所以他的長度是2

加深一點難度,{{'isValid' : True, 3 : 0.01}, 100: "8.8"}這個列表的長度呢?
其實答案是二個,二個元素分別為{'isValid' : True, 3 : 0.01}, 100: "8.8"

除了用數的,還有什麼方法可以知道他的長度?
那就來介紹字典的第一個方法(method)吧!

語法:len(DictName)

  • 參數可以放置一個字典或是字典變數
  • 回傳值是一個整數
    空列表的長度為 0
# Example 1
dict1 = {1: 2, 3: 4}
print(len(dict1))

# Example 2
dict2 = {{'Python': 0.01}, 100: "8.8"}
lenOfDict2 = len(dict2)

# Example 3
lenOfDict3 = len({1: 2, 3: 4})

# Example 4
print(len({}))

Key & Value 鍵值與值

上述提到鍵值與值的規則:

  • key 只能是數字、字串等無法被改變的資料型態
  • value 可以是任何資料型態

取得 Value

上面我們說到字典的 key 相當於 index ,而且我們知道呼叫列表 value 的語法是 list[index]。想當然,呼叫字典的 value 的語法就是 dict[key]

這個例題的輸出分別是什麼呢?

dic = {"sss" : 12 , "fff" : 33}

print(dic["sss"])
print(dic["abc"])

因為鍵值 "sss" 存在,所以輸出 12
因為鍵值 "abc" 不存在,所以給出錯誤訊息 KeyError: 'abc'

Key v.s. Value

現在,我們要聊聊「鍵值與值」的關係。

  1. 在數學函數上:
    • 一個 x 對應一個 f(x)
    • 鍵值:x
    • 值:f(x)
  2. 在成績單上:
    • 一個 座號 對應一個 分數
    • 鍵值:座號
    • 值:分數
  3. 在日常生活中:
    • 一個 身分證字號 對應一個 人
    • 鍵值:身分證字號
    • 值:人

你有發現嗎?
「鍵值」好像是獨一無二的

  • 一條x軸上,只有一個 x=3
  • 一張班級成績單中,只有一個座號 15 號的同學
  • 台灣只有一個人的身分證字號是 A123456789

但是「值」似乎不一定要完全相異

  • 一個拋物線函數圖性上,就存在許多組「相異 x」但是「相等函數值」的數據
  • 成績單上存在相同分數的情況常常發生
  • 台灣有許多人是同名同姓的但是他們必然有相異身分證字號

沒錯!這就是字典中間值與值的關係!

相同鍵值如何處理

dict1 = {'Bob' : 12, 'Tom' : 10, 'Bob' : 30}
print(dict1[Bob])

這個程式碼的輸出是什麼?
答案會是 30 喔!相同的鍵值,會以最後出現的為準。


瞭解基本觀念,下一篇來認識字典相關的操作,例如:增減字典元素、內建字典方法...


上一篇
[Day 07] 闖進Python異世界 - Queue 排排站
下一篇
[Day 09] 闖進Python異世界 - Methods of Dictionary
系列文
闖進Python異世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言