每個鍵與其值使用一個冒號(:
)分開,這些鍵-值對是使用逗號分隔的,整個字典專案用大括號括起來。 沒有任何專案的空字典只用兩個花括號寫成:{}
鍵在字典中是唯一的,而值可以不必是唯一的。字典的值可以是任何型別的,但是鍵必須是不可變的資料型別,例如字串,數位或元組。
要存取字典元素,可以使用熟悉的中括號以及鍵來獲取其值。 以下是一個簡單的例子 -
#!/usr/bin/python3
dict = {'Name': 'Maxsu', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
當執行上述程式碼時,會產生以下結果 -
dict['Name']: Maxsu
dict['Age']: 7
如果嘗試使用鍵(不是字典的一部分)存取資料項,會收到以下錯誤,如下範例 -
#!/usr/bin/python3
dict = {'Name': 'Maxsu', 'Age': 7, 'Class': 'First'}
print ("dict['Minsu']: ", dict['Minsu'])
當執行上述程式碼時,會產生以下結果 -
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Minsu'
可以通過新增新資料項或鍵值對,修改現有資料項或刪除現有資料項來更新字典,如下面給出的簡單範例所示。
#!/usr/bin/python3
dict = {'Name': 'Maxsu', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School" # Add new entry
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
當執行上述程式碼時,會產生以下結果 -
dict['Age']: 8
dict['School']: DPS School
可以刪除單個字典元素或清除字典的全部內容。也可以在單個操作中刪除整個字典。
要顯式刪除整個字典,只需使用del
語句。 以下是一個簡單的例子 -
#!/usr/bin/python3
dict = {'Name': 'Maxsu', 'Age': 7, 'Class': 'First'}
del dict['Name'] # remove entry with key 'Name'
dict.clear() # remove all entries in dict
del dict # delete entire dictionary
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
這產生以下結果:程式丟擲了一個例外,因為在執行del dict
之後,字典不再存在。
print ("dict['Age']: ", dict['Age'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'type' object is not subscriptable
>>> print ("dict['School']: ", dict['School'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'type' object is not subscriptable
註 -
del()
方法將在後續章節中討論。
字典值沒有限制。它們可以是任意任意的Python物件,標準物件或使用者定義的物件。 但是,對於鍵來說也是如此。
關於字典的鍵有兩個要點:
(a). 不允許每鍵多於資料值。這意味著不允許重複的鍵。 在分配過程中遇到重複鍵時,則以最後一個賦值為準。 例如 -
#!/usr/bin/python3
dict = {'Name': 'Maxsu', 'Age': 7, 'Name': 'Minlee'}
print ("dict['Name']: ", dict['Name'])
當執行上述程式碼時,會產生以下結果 -
dict['Name']: Minlee
(b). 鍵必須是不可變的。 這意味著可以使用字串,數位或元組作為字典鍵,但不允許使用['key']
。 以下是一個簡單的例子 -
#!/usr/bin/python3
dict = {['Name']: 'Maxsu', 'Age': 7}
print ("dict['Name']: ", dict['Name'])
當執行上述程式碼時,會產生以下結果 -
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Maxsu', 'Age': 7}
TypeError: list objects are unhashable
Python包括以下字典函式 -
編號 | 函式 | 描述 |
---|---|---|
1 | cmp(dict1, dict2) | 在Python 3中不再可用。 |
2 | len(dict) | 計算出字典的總長度。它將等於字典中的資料項數目。 |
3 | str(dict) | 生成字典的可列印字串表示形式 |
4 | type(variable) | 返回傳遞變數的型別。如果傳遞變數是字典,那麼它將返回一個字典型別。 |
Python包括以下字典方法 -
編號 | 函式 | 描述 |
---|---|---|
1 | dict.clear() | 刪除字典dict 的所有元素 |
2 | dict.copy() | 返回字典dict 的淺拷貝 |
3 | dict.fromkeys() | 建立一個新的字典,其中包含seq 的值和設定為value 的值。 |
4 | dict.get(key, default=None) | 對於鍵(key )存在則返回其對應值,如果鍵不在字典中,則返回預設值 |
5 | dict.has_key(key) | 此方法已刪除,使用in 操作符代替 |
6 | dict.items() | 返回字典dict 的(key,value) 元組對的列表 |
7 | dict.keys() | 返回字典dict 的鍵列表 |
8 | dict.setdefault(key, default = None) | 類似於get() ,如果key 不在字典dict 中,則將執行賦值操作:dict [key] = default |
9 | dict.update(dict2) | 將字典dict2 的鍵值對新增到字典dict |
10 | dict.values() | 返回字典dict 的值列表 |