1.字典的定義 字典類似於列表,但相對於列表來說字典更加通用,列表的下標必須必須為整數,而字典下標則可以為任意字元串/數字等,不可以是可變數據類型(列表,數組,元組) 字典包含下標(keys)集合和值(vaule)集合,且keys是唯一的 2.字典的創建 實例如下: 輸入如下 3.字典的特性 無序性 ...
1.字典的定義
- 字典類似於列表,但相對於列表來說字典更加通用,列表的下標必須必須為整數,而字典下標則可以為任意字元串/數字等,不可以是可變數據類型(列表,數組,元組)
- 字典包含下標(keys)集合和值(vaule)集合,且keys是唯一的
2.字典的創建
實例如下:
1 d1={'name':'alex','age':18,1:'85'} 2 d2={} 3 d2['name']='john' 4 d2['age']=15 5 d3=dict(name='lili',age=12) 6 d4=dict(zip(('name','age'),('tom',20))) 7 print "d1=",d1 8 print "d2=",d2 9 print "d3=",d3 10 print "d5=",d4
輸入如下
1 d1= {1: '85', 'age': 18, 'name': 'alex'} 2 d2= {'age': 15, 'name': 'john'} 3 d3= {'age': 12, 'name': 'lili'} 4 d4= {'age': 20, 'name': 'tom'}
3.字典的特性
- 無序性
字典最終顯示的值是不會按照插入的先後順序所決定的。因為字典的本質是hash table,而Hash的本質是, 將一數列作為Key儘量平均分配另一個數列Value到程式已經申請好的Array上。
- 鍵值唯一性
字典中的鍵值是唯一(重覆的只會保存一個)
4.字典的基本操作
- 修改字典
1 #coding=utf-8
2 d1 = {'name':'alex'}
3 print '字典修改前:', d1 4 d1['name']='Bod' 5 print '字典修改後:' ,d1
實例輸出結果:
1 字典修改前: {'name': 'alex'} 2 字典修改後: {'name': 'Bod'}
- 字典訪問
1 #coding=utf-8 2 d1 = {'name':'alex','age':18} 3 print 'd1["name"]:',d1["name"] 4 print 'd1["age"]:',d1["age"]
實例輸出結果:
1 d1["name"]: alex 2 d1["age"]: 18
鍵值不存在的情況無法通過該方法獲取值,會拋出異常
- 字典刪除
1 #coding=utf-8 2 3 #刪除某個鍵 4 d1 = {'name':'alex','age':18} 5 print '刪除前字典內容:',d1 6 del d1['name'] 7 print '刪除後字典內容:',d1 8 9 #清空字典 10 d2={'name':'alex','age':18} 11 print '清空前字典內容:',d2 12 d2.clear() 13 print '清空後字典內容:',d2 14 15 16 #刪除字典 17 d3={'name':'alex','age':18} 18 print '刪除前字典內容:',d3 19 del d3 20 #捕獲異常 21 try: 22 print '刪除後字典內容:',d3 23 except NameError: 24 print 'd3不存在'
實例輸出結果:
1 刪除前字典內容: {'age': 18, 'name': 'alex'} 2 刪除後字典內容: {'age': 18} 3 清空前字典內容: {'age': 18, 'name': 'alex'} 4 清空後字典內容: {} 5 刪除前字典內容: {'age': 18, 'name': 'alex'} 6 刪除後字典內容: d3不存在
刪除字典指定鍵值時,需要確保鍵值存在,否則會拋出異常
5.字典的內置函數
函數名稱 | 函數作用 | 函數結果 |
cmp({"name":"alex"},{"name":"Bob"}) | 比較兩個字典是否相同 | 完全相同返回0 |
len({"name":"alex"}) | 計算字典鍵的個數 | 1 |
str({"name":"alex"}) | 將字典轉為字元串 | "{'name': 'alex'}" |
type({"name":"alex"}) | 輸出類型 | dict |
dict1.clear() | 刪除字典所有鍵值 | |
dict1.copy() | 複製字典 | |
dict.fromkeys(seq,vaule) | 創建字典,以seq為key,value為值 | |
dict1.get(key) | 根據key獲取vaule,如果可以存在,則獲取值,不存在,則返回None | |
dict1.has_key(key) | 判斷key是否存在,存在返回True,不存在Flase | |
dict1.items() | 以列表返回可遍歷的(鍵, 值) 元組數組 | |
dict1.keys() | 以列表返回所有key | |
dict1.setdefault() | 和get功能相同 | |
dict1.values() | 以列表返回字典所有值 | |
dict1.update(dict2) | 將dict2添加到dict1中 | |
dict1.iteritems() | 返回一個迭代器 | |
dict1.pop(key) | 與del功能相同 | |
dict1.popitem() | 刪除,並有返回值,字典為空時調用該方法拋出異常 |