看了大家的評論,還是有意外的收貨。感謝每個小夥伴的評論與補充。
眾人拾柴火焰高~
今天的筆記是記錄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()) #清空並列印結果
字典還有很多方法,後面的筆記,遇見不同的場景,處理字典的時候我們在詳細分析記錄。