字典
字典
- 字典(dictionary)與串列很像,但是它不在乎項目的順序,而且不用位移值來選擇項目
- 字典是可變的,可以添加、刪除、改變它們的「鍵/值」元素
鍵(key)
- 必須為每一個值指定一個獨一無二的鍵(key)
- 鍵(key):可以用任何一種不可變的 Python 類型 — 布林、整數、浮點數、tuple、字串(通常是字串)
其他語言
- 其他語言可能會將字典稱為關聯陣列(associative)、雜湊(hash)、或 hashmap
- 如果你曾經用過只支援陣列或串列的語言,你會愛上字典
- 在 Python,字典也可稱為 dict 來減少字母數
建立字典【使用 {}】
- 要建立字典,要用大括號包住以逗號分隔的鍵:值對
- 字典名稱 = {鍵:值, 鍵:值, 鍵:值}
- 在 Python 中,可以省略串列、tuple或字典的最後一個項目之後的逗號
- 在大括號內輸入鍵與值時,不需要縮排排列,那只是為了協助閱讀
空字典
- 字典名稱 = {}
- 字典名稱
- {}
>>> empty_dict = {}
>>> empty_dict
{}
製作字典
- 字典名稱 = {鍵:值, 鍵:值, 鍵:值}
- 字典名稱
- {鍵:值, 鍵:值, 鍵:值}
>>> bierce = {
"day": "A period of twenty-four hours, mostly misspent",
"positive": "Mistaken at the top of one's voice",
"misfortune": "The kind of fortune that never misses",
}
>>> bierce
{'day': 'A period of twenty-four hours, mostly misspent', 'positive': "Mistaken at the top of one's voice", 'misfortune': 'The kind of fortune that never misses'}
轉換【使用 dic()】
- 可以使用 dict() 函式,將雙值序列轉換到字典
- 雙值序列:鍵/值序列,每個序列的第一個項目被當成鍵,第二個項目被當成值(例如:"Strontinum, 90" 或 "Vikings, 20, Packers, 7")
- 在字典裡面,鍵的順序是任意排列,可能會根據你添加項目的方式而有所不同
- 可以使用任何存放雙項目序列的序列
雙項目「串列」的「串列」 → dict()
- 串列名稱 = [['字串','字串'], ['字串','字串'], ['字串','字串']]
- dict(串列名稱)
- {'字串': '字串', '字串': '字串', '字串': '字串'}
>>> lol = [['a', 'b'], ['c', 'd'], ['e', 'f']]
>>> dict(lol)
{'a': 'b', 'c': 'd', 'e': 'f'}
雙項目「Tuple」的「串列」 → dict()
- 串列名稱 = [('字串', '字串'), ('字串', '字串'), ('字串', '字串')]
- dict(串列名稱)
- {'字串': '字串', '字串': '字串', '字串': '字串'}
>>> lot = [('a', 'b'), ('c', 'd'), ('e', 'f')]
>>> dict(lot)
{'a': 'b', 'c': 'd', 'e': 'f'}
雙項目「串列」的「Tuple」 → dict()
- tuple名稱 = (['字串','字串'], ['字串','字串'], ['字串','字串'])
- dict(tuple名稱)
- {'字串': '字串', '字串': '字串', '字串': '字串'}
>>> tol = (['a', 'b'], ['c', 'd'], ['e', 'f'])
>>> dict(tol)
{'a': 'b', 'c': 'd', 'e': 'f'}
雙字元「字串」的「串列」 → dict()
- 串列名稱 = ['字元1字元2', '字元3字元4', '字元5字元6']
- dict(串列名稱)
- {'字元1': '字元2', '字元3': '字元4', '字元5': '字元6'}
>>> los = ['ab', 'cd', 'ef']
>>> dict(los)
{'a': 'b', 'c': 'd', 'e': 'f'}
雙字元「字串」的「Tuple」→ dict()
- tuple名稱 = ('字元1字元2', '字元3字元4', '字元5字元6')
- dict(tuple名稱)
- {'字元1': '字元2', '字元3': '字元4', '字元5': '字元6'}
>>> tos = ('ab', 'cd', 'ef')
>>> dict(tos)
{'a': 'b', 'c': 'd', 'e': 'f'}
添加或變更項目【使用 [鍵]】
- 添加項目到字典 → 用項目鍵參考,並指派值
- 字典已經有這個鍵 → 「既有的值」會被換成「新的值」
- 鍵是新的 → 「鍵與值」一起被加到字典
- 與串列不同的是,不需要擔心指定的索引值超出範圍,而讓 Python 丟出例外
- 字典的鍵必須是獨一無二
添加
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱
- {鍵1:值1, 鍵2:值2, 鍵3:值3}
- 字典名稱['鍵4'] = '值4' → 添加鍵/值
- 字典名稱
- {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4}
'Chapman': 'Graham',
'Cleese': 'John',
'Idle': 'Eric',
'Jones': 'Terry',
'Palin': 'Michael',
}
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael'}
>>> pythons['Gilliam'] = 'Gerry'
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Gilliam': 'Gerry'}
變更
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4}
- 字典名稱['鍵4'] = '值5'
- 字典名稱
- {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值5}
>>> pythons['Gilliam'] = 'Terry'
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Gilliam': 'Terry'}
>>>
多次使用同一個鍵,最後一個值會勝出
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4, 鍵4:值5}
- 字典名稱
- {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值5}
>>> some_pythons = {
'Graham': 'Chapman',
'John': 'Cleese',
'Eric': 'Idle',
'Michael': 'Palin',
'Terry': 'Gilliam',
'Terry': 'Jones',
}
>>> some_pythons
{'Graham': 'Chapman', 'John': 'Cleese', 'Eric': 'Idle', 'Michael': 'Palin', 'Terry': 'Jones'}
>>>