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循環,可以很方便的遍歷整個字典。
總結下,本文按照使用場景的方式介紹了下字典最常用的一些操作,能滿足絕大部分應用。除上面介紹的外,還有一些操作方法,不太常用,這里就不再介紹。
