合併字典【使用 update()】
「複製」鍵與值
可以使用 update() 函式,來將一個字典的鍵與值複製到另一個
- 字典名稱1 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱1
- {鍵1:值1, 鍵2:值2, 鍵3:值3}
- 字典名稱2 = {鍵4:值4, 鍵5:值5, 鍵6:值6,}
- 字典名稱1.update(字典名稱2) → update()複製
- 字典名稱1
- {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4, 鍵5:值5, 鍵6:值6}
>>> pythons = {
'Chapman': 'Graham',
'Cleese': 'John',
'Gilliam': 'Terry',
'Idle': 'Eric',
'Jones': 'Terry',
'Palin': 'Michael',
}
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael'}
>>> others = { 'Marx': 'Groucho', 'Howard': 'Moe'}
>>> pythons.update(others)
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Marx': 'Groucho', 'Howard': 'Moe'}
合併字典有「相同鍵」,最後的字典會勝出
第二個字典與主要合併的字典有相同的鍵時,第二個字典的值會勝出
- 字典名稱1 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱2 = {鍵3:值4, 鍵5:值5}
- 字典名稱1.update(字典名稱2)
- 字典名稱1
- {鍵1:值1, 鍵2:值2, 鍵3:值4, 鍵5:值5}
>>> first = {'a': 1, 'b': 2}
>>> second = {'b': 'platypus'}
>>> first.update(second)
>>> first
{'a': 1, 'b': 'platypus'}
刪除
刪除項目【使用 del 與鍵】
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- del 字串名稱['鍵1']
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Marx': 'Groucho', 'Howard': 'Moe'}
>>> del pythons['Marx']
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael', 'Howard': 'Moe'}
>>> del pythons['Howard']
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael'}
刪除所有項目【使用 clear()】
刪除所有鍵與值【使用 clear()】
- 字典名稱.clear()
- 字典名稱
- {}
>>> pythons.clear()
>>> pythons
{}
空字典【使用 {} 指派給字典名稱】
- 字典名稱 = {}
- 字典名稱
- {}
>>> pythons = {}
>>> pythons
{}
使用 in 來測試鍵
確認字典是否有某個鍵,可使用 in
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- '鍵1' in 字典名稱
- True
- '鍵4' in 字典名稱
- False
>>> pythons = {
'Chapman': 'Graham',
'Cleese': 'John',
'Jones': 'Terry',
'Palin': 'Michael',
}
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael'}
>>> 'Chapman' in pythons
True
>>> 'Palin' in pythons
True
>>> 'Gilliam' in pythons
False
取得
取得一個項目【使用 [鍵]】
指定字典的「鍵」→ 取出對應鍵的「值」
這是最常用的字典功能。要指定字典,及取出對應值的鍵
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱[鍵1]
- 值1
>>> pythons = {
'Chapman': 'Graham',
'Cleese': 'John',
'Jones': 'Terry',
'Palin': 'Michael',
}
>>> pythons['Cleese']
'John'
指定字典「沒有」的「鍵」→ 例外
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱[鍵4]
- 例外
>>> pythons['Cleese']
'John'
>>> pythons['Marx']
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
pythons['Marx']
KeyError: 'Marx'
防止「例外」
【方法一】使用 in 來測試鍵
- 鍵 in 字典名稱
- True/False
>>> 'Marx' in pythons
False
【方法二】取得一個項目:使用 get()
使用特殊的字典函式 get()。要提供字典、鍵,及一個選用的值。
鍵存在 → 使用 get() 取得值
- 字典名稱.get(鍵)
- 值
>>> pythons = {
'Chapman': 'Graham',
'Cleese': 'John',
'Jones': 'Terry',
'Palin': 'Michael',
}
>>> pythons.get('Cleese')
'John'
鍵不存在 → 可另外指定值
- 字典名稱.get(鍵, 選用的值)
- 選用的值
>>> pythons.get('Marx', 'Not a Python')
'Not a Python'
鍵不存在 → None
- 字典名稱.get(鍵)
- (得到None,互動式解譯器不會顯示任何東西)
>>> pythons.get('Marx')
>>>
取得所有的「鍵」【使用 keys()】
使用 keys() 取得字典內的所有鍵
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱.keys()
- dict.keys([鍵1, 鍵2, 鍵3])
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> signals.keys()
dict_keys(['green', 'yellow', 'red'])
回傳
Python 2:keys() → 回傳一個串列
在 Python 2,keys() 只會回傳一個串列
Python 3:keys() → dict_keys()
- 在 Python 3,keys() 會回傳 dict_keys()
- dict_keys(),它是可佚代的鍵資料,很適合用在大型的字典 → 因為它不會浪費時間與記憶體來建立及儲存可能用不到的串列
dict_keys 物件轉換成串列【使用 list()】
通常你其實想要一個串列,在 Python 3,必須呼叫 list() 來將 dict_keys 物件轉換成串列
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱.keys()
- dict.keys([鍵1, 鍵2, 鍵3])
- list( 字典名稱.keys() )
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> signals.keys()
dict_keys(['green', 'yellow', 'red'])
>>> list( signals.keys() )
['green', 'yellow', 'red']
取得所有的「值」【使用 list()】
在 Python 3,需要使用 list()函式來將 values() 與 items() 的結果轉成一般的 Python 串列。
取得所有的「值」【使用 list() 及 values()】
以 tuple 的形式回傳每個鍵/值
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱.values()
- list( 字典名稱.values() )
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> signals.values()
dict_values(['go', 'go faster', 'smile for the camera'])
>>> list( signals.values() )
['go', 'go faster', 'smile for the camera']
取得所有的「鍵/值」對【使用 list() 及 items()】
- 字典名稱 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱.items()
- list( 字典名稱.items() )
>>> signals.items()
dict_items([('green', 'go'), ('yellow', 'go faster'), ('red', 'smile for the camera')])
>>> list( signals.items() )
[('green', 'go'), ('yellow', 'go faster'), ('red', 'smile for the camera')]
用 = 指派,用 copy() 來複製
用 = 指派
與串列一樣,當更改字典時,會反映在所有參考名稱上
- 字典名稱1 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱2 = 字典名稱1
- 字典名稱1[鍵4] = 值4
- 字典名稱2
- {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4}
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> save_signals = signals
>>> signals['blue'] = 'confuse everyone'
>>> save_signals
{'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera', 'blue': 'confuse everyone'}
用 copy() 來複製
將某個字典內的鍵與值,複製到其他的字典,使用 copy()
- 字典名稱1 = {鍵1:值1, 鍵2:值2, 鍵3:值3,}
- 字典名稱2 = 字典名稱1.copy()
- 字典名稱1[鍵4] = 值4
- 字典名稱1
- {鍵1:值1, 鍵2:值2, 鍵3:值3}
- 字典名稱2
- {鍵1:值1, 鍵2:值2, 鍵3:值3, 鍵4:值4}
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
>>> original_signals = signals.copy()
>>> signals['blue'] = 'confuse everyone'
>>> signals
{'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera', 'blue': 'confuse everyone'}
>>> original_signals
{'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}