看了大家的評論,還是有意外的收貨。感謝每個小夥伴的評論與補充。
衆人拾柴火焰高~
今天的筆記是記錄python中的資料對象----字典!
前面有講到list清單和tuple元組的筆記,他們都是一樣可以用來儲存對象。list清單是支援讀寫修改,tuple元組之支援讀取,不可修改。但是他們有共同的特點,将單個的元素值,存儲在清單或元組中,然後通過索引(元素下标)的方式去找到對應的元素,進行操作。
那麼dictionaryt字典呢?它是什麼資料結構?
字典這種資料結構被稱為映射。字典中的值(value)沒有特殊的順序,但是這些值都存儲在一個特定的鍵(key)下。我們可以通過鍵(key)找到對應的值。鍵(key)可以是數字、字元串或元組等。
就這麼了解,和新華字典一樣,通過拼音去找對應的字。~~~~就是這麼個映射的意思。不要太較真。
我們先看下建立一個空字典:
1 dict_1 = {} #這就是一個空字典{},用變量dict_1指向他.
我們在建立一個有資料的字典: 下面的19,是數字對象。加引号就是字元串對象。具體加不加看你自己的用途,字典都是支援的~~~~
1 dict_1 = {'name':'Xiao Hong','age':19,'iphone':'110'} #建立第一個字典類型的資料
2
3
4 dict_2 = {'Xiao Hong':{'name':'Xiao Hong','age':19,'iphone':'110'}, #建立第二個字典類型的資料,還可以這樣建立哦
5 'Xiao Jun':{'name':'Xiao Jun','age':16,'iphone':'117'}}
我們發現:建立的第二個字典,它的鍵(key),對應的值(value)是另一個字典類。其實,字典對象的鍵(key)也是支援很多對象類型的,
最常用的就是數字和字元串類型作為鍵(key),因為查找對象的效率是最高的。
我相信你已經會根據以上結構去建立字典這樣的映射結構了。接下來我們再建立一個新的字典,對它進行添加、修改、删除的操作。
為空字典,添加對象:
1 dict_1 = {} #建立一個空字典
2
3 dict_1['name'] = 'Xiao' #變量名【鍵】 = 【值】,直接指派的方式添加對象
4 dict_1[1.34] = 'abc'
5 dict_1[100] = 'holle word'
6
7 print(dict_1) #檢視添加對象的效果
1 dict_1 = {} #建立一個空字典
2
3 dict_1['name'] = 'Xiao' #變量名【鍵】 = 【值】,直接指派的方式添加對象
4 dict_1[1.34] = 'abc'
5 print(dict_1) #檢視添加對象的效果
6
7 dict_1['name'] = 'hhh' #将'name': ['Xiao'] 改為:'name': ['hhh']
8 print(dict_1) #檢視修改後對象的效果,做對比
我們看到了添加和修改,我要搞清楚一個概念,如果在我們指派操作的時候,鍵(key)在字典中是不存在的,呢麼就是添加對象;如果在我們指派的時候,鍵(key)是本身字典就有同名的鍵(key),那就是修改。
如果說我們添加的時候不知道裡面有沒有同名的鍵(key),我們可以這樣檢查一下鍵(key)是不是在字典中已經存在:
1 dict_1 = {'name':'Xiao Hong','age':19,'iphone':'110'}
2
3 print('name' in dict_1) #要查詢的格式 鍵 in關鍵字 字典對象(變量名)
4 print('hhh' in dict_1) #傳回True就是存在,傳回的False則是不存在
當然也可以使用這個方法:
has_key() 可以檢查目前字典中鍵是否存在,但是!!!python3中沒有這個方法啦,是以不再舉例了,用第一種 in關鍵字就好了.。
我們再看下删除字典中的一個元素,代碼怎麼實作:
1 dict_1 = {'name':'Xiao Hong','age':19,'iphone':'110'}
2 print(dict_1) #删除之前
3
4 del dict_1['age'] #del關鍵字
5 print(dict_1) #删除之後
也可以這樣删除字典中的元素:
1 dict_1 = {'name':'Xiao Hong','age':19,'iphone':'110'}
2 print(dict_1) #删除之前
3
4 a = dict_1.pop('name') #pop()方法,删除字典元素的時候,将鍵對應的值傳回給了變量。
5 print(dict_1) #删除之後
6 print(a) #我們看下變量a有沒有指向删除的值 'Xiao Hong'
我看的pop()方法,删除字典元素的時候,将鍵對應的值傳回給了變量。
有時候我們會周遊字典中的鍵:
使用 keys() 方法:
1 dict_1 = {'name':'Xiao Hong',
2 'age':'19',
3 'iphone':'110'} #我們建立的字典對象
4
5 for key in dict_1.keys(): #周遊字典中的鍵key
6 print(key,end= ' ') # end=' '意思是末尾不換行,加空格。
同樣的,我們也可以周遊字典中的所有值:
使用values() 方法:
1 dict_1 = {'name':'Xiao Hong',
2 'age':'19',
3 'iphone':'110'} #我們建立的字典對象
4
5 for value in dict_1.values(): #周遊字典中的值value
6 print(value,end= ' ') # end=' '意思是末尾不換行,加空格。
有時候我們會同時周遊字典中的鍵和值,這個需要用到字典中的items() 方法:
items() 方法: 它可以同時擷取key和value 我們看下代碼的實作:
1 dict_1 = {'name':'Xiao Hong',
2 'age':'19',
3 'iphone':'110'} #我們建立的字典對象
4
5 for key,value in dict_1.items(): #用 items()函數,同時周遊鍵和值
6 print(key,value,end= '') #列印鍵和值,end=' '意思是末尾不換行,加空格。
1 dict_1 = {'name':'Xiao Hong',
2 'age':'19',
3 'iphone':'110'} #我們建立的字典對象
4
5 print(dict_1.get('name')) #我們可以使用get()方法擷取字典的值
字典的合并,就是将兩個字典合并在一起
update() 需要注意的是:如果被合并的字典中包含已經存在的鍵值對,會覆寫原有的鍵值對。
1 dict_1 = {'name_1':'Xiao Hong',
2 'age':'19',
3 'iphone':'110'} #第一個字典
4
5 print(dict_1) #合并之前
6 dict_2 = {'name_2':'Xiao JUN',
7 'age':'19',
8 'iphone':'110'} #第二個字典
9
10 dict_1.update(dict_2) #将dict_2合并在dict_1字典中。
11 print(dict_1) #合并之後的dict_1字典,注意重複的鍵值對會被覆寫掉
清空字典用clear() 方法:
1 dict_1 = {'name_1':'Xiao Hong',
2 'age':'19',
3 'iphone':'110'} #建立一個字典
4
5 print(dict_1) #清空之前
6 print(dict_1.clear()) #清空并列印結果
字典還有很多方法,後面的筆記,遇見不同的場景,處理字典的時候我們在詳細分析記錄。