python中的字典,就是通常說的map,即 key/value集合的數據結構。
本文來介紹下在python下如何使用字典。 對於map這種數據結構能干什么,我們就不說了,這是一個常見的數據結構,我們假設大家都理解了。
我們重點講在python下如何使用它,其實就是熟悉相關的api方法了。
作為一個數據結構,使用它,不外乎包括創建(包括初始化)、增刪查改、以及其它一些操作。
一、創建
通過{}來標識一個字典,內容是鍵值對,形式就是典型的json對象的格式。如:
users = {} #創建一個空的字典
users = {1:"jack",2:"tom"} #創建一個字典,包含兩個成員.
除上面這種方式外,還可以利用內置函數 dict 來創建字典。
二、插入和修改
舉例如下
>>> users={} >>> users[3]="jame" >>> print users {3: 'jame'} >>> users[4]="tom" >>> users[10]="mike" >>> print users {10: 'mike', 3: 'jame', 4: 'tom'} >>> users[4]="tom1" >>> print users {10: 'mike', 3: 'jame', 4: 'tom1'}
直接通過 字典變量名[key名]就可以添加新的key-value項。 注意上面[]的數字不是序號,字典沒有序號的概念,這里的數字是key值。
從上面例子可以看出,如果指定的key不存在,就會自動添加一個。
如果指定的key存在,就會用指定的值替換存在的key對應的value值。
三、刪除
1、清除字典中的所有項
字典對象提供了 clear方法,可以清楚字典中的所有項。
2、del 字典變量
舉例如下
>>> users={1:"tom"} >>> newusers = users >>> del users >>> print users Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'users' is not defined >>> print newusers {1: 'tom'}
del是python中的內置語句,用於刪除變量的定義。從上面例子可以看出,它只是刪除變量定義,不會刪除變量指向的內容,當然如果這個內容沒有被其它變量引用,python會自動釋放。上面的例子,users和newusers指向同一個字典對象,即使我們刪除了users變量,對newusers是不影響的。
這點與clear方法不同,clear方法是刪除字典中的所有內容,如果多個變量指向同一字典,該字典內容被clear啊,顯然所有變量都能察覺到。
3、pop方法
先看例子
>>> data={"x":1,"y":2} >>> print data {'y': 2, 'x': 1} >>> value = data.pop("x") >>> print value 1 >>> print data {'y': 2} >>> value = data.pop("z") Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'z'
pop方法是根據傳入的key值,返回對應的value值,並刪除字典中的該條目。
但如果指定的key對應的條目在字典中不存在,則程序會出現異常。
四、查詢
1、判斷key是否存在
在很多情況下,我們需要判斷一個key是否存在。代碼如:
>>> data={"x":1} >>> if "x" in data: ... print True ... else: ... print False ... True >>> if "y" in data: ... print True ... else: ... print False ... False
除了用 in 運算符來判斷某個key是否在字典中存在外,還可以用字典的方法 has_key(key)來檢查,效果是一樣的。
2、獲取指定key的value
格式:字典變量[key值],舉例如
>>> data={"x":1} >>> data["x"] 1 >>> data["y"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'y'
可以看出,如果key在字典中不存在,會報異常。還有一種更友好的方式,就是利用get方法,舉例如下:
>>> data={"x":1} >>> print data.get("x") 1 >>> print data.get("y") None
可以看出,即使key不存在,程序不會出異常,get會返回一個None值。
如果我們希望在獲取key對應的value時,如果key存在,則正常返回,如果key不存在,可以自動往字典中添加一個條目,並返回設置的條目的值,這可以用到setdefault方法,舉例如下:
>>> data={"x":1} >>> print data.setdefault("x") 1 >>> print data.setdefault("x",3) 1 >>> print data {'x': 1} >>> print data.setdefault("y",2) 2 >>> print data {'y': 2, 'x': 1} >>> print data.setdefault("z") None >>> print data {'y': 2, 'x': 1, 'z': None}
從上面代碼例子中,我們可以很清晰的看出setdefault方法的作用。
3、遍歷字典
很多場景下,我們需要遍歷整個字典,獲取到其中的每個條目信息。這可以這么來做,具體看代碼:
>>> data = {"x":1,"y":2,"z":3} >>> for key in data: ... print key ... print data[key]
通過for循環,可以很方便的遍歷整個字典。
總結下,本文按照使用場景的方式介紹了下字典最常用的一些操作,能滿足絕大部分應用。除上面介紹的外,還有一些操作方法,不太常用,這里就不再介紹。