位置:首頁 > 腳本語言 > Python基礎教程 > Python字典

Python字典

字典是可變的,並且可以存儲任意數量的Python對象,包括其他容器類型另一個容器類型。字典包括鍵對(稱為項目)及其相應的值。

Python字典也被稱為關聯數組或哈希表。字典的一般語法如下:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

可以用下麵的方式創建字典:

dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

每個按鍵都來自它的值用冒號(:),該項目以逗號分隔,整個事情是包含在大括號分隔。冇有任何項目一個空的字典是寫隻有兩個大括號,就像這樣:{}

鍵在一個字典中是唯一的,而值可能不是。字典的值可以是任何類型的,但鍵必須是不可變的數據類型,例如字符串,數字,或元組。

訪問字典的值:

要訪問字典元素,您可以使用熟悉的方括號一起的關鍵,獲得它的值。下麵是一個簡單的例子:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];

當執行上麵的代碼中,產生以下結果:

dict['Name']:  Zara
dict['Age']:  7

如果要訪問一個不存在的鍵,這會得到一個錯誤,如下所示:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Alice']: ", dict['Alice'];

當執行上麵的代碼,產生以下結果:

dict['Zara']:
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

更新字典:

可以通過添加一個新條目或項目(即一個鍵 - 值對),修改現有條目或刪除。作為簡單的例子,如下圖所示在現有條目更新字詞:

#!/usr/bin/python

dict = {'Name': 'Zara', '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/python

dict = {'Name': 'Zara', '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刪除,字典已經不存在了:

dict['Age']:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

注:del()方法會在後續的章節中討論。

字典的鍵的屬性:

字典值冇有限製。它們可以是任意Python對象,無論是標準的對象或用戶定義的對象。但是作為鍵,是不可以這樣的。

要記住字典中的鍵的兩個要點:

(一)不準一個鍵對應多個條目。這意味著不能有重複的鍵。當有重複的鍵,在分配過程中以最後分配的為準。下麵是一個簡單的例子:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};

print "dict['Name']: ", dict['Name'];

當執行上麵的代碼,產生以下結果:

dict['Name']:  Manni

(二)鍵的值字必須是不可變的。這意味著可以使用字符串,數字或元組作為字典的鍵,但像['key']是不允許的。下麵是一個簡單的例子:

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7};

print "dict['Name']: ", dict['Name'];

當執行上麵的代碼,產生以下結果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable

內置字典功能和方法:

Python中包括以下字典功能:

SN 方法及描述
1 cmp(dict1, dict2)
比較兩個字典的元素
2 len(dict)
字典的長度。這將等同於在字典中的項數
3 str(dict)
產生字典裡可打印字符串表示形式
4 type(variable)
返回傳遞變量的類型。如果傳遞變量是字典,那麼它將返回一個字典類型

Python中包括以下字典方法

SN 方法及描述
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)
如果在字典dict中存在鍵key,則返回true,否則返回 false
6 dict.items()
返回字典的(鍵,值)元組對的列表
7 dict.keys()
返回字典的鍵的列表
8 dict.setdefault(key, default=None)
類似get(),但會設定dict[key]=default如果key不是已經在於字典中
9 dict.update(dict2)
增加字典dict2的鍵值對到字典中
10 dict.values()
返回字典dict的值列表