1. 程式人生 > >Python基礎總結之第十天開始【認識一下python的另一個數據物件-----字典】(新手可相互督促)

Python基礎總結之第十天開始【認識一下python的另一個數據物件-----字典】(新手可相互督促)

       看了大家的評論,還是有意外的收貨。感謝每個小夥伴的評論與補充。

眾人拾柴火焰高~

        今天的筆記是記錄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())                #清空並列印結果

 

字典還有很多方法,後面的筆記,遇見不同的場景,處理字典的時候我們在詳細分析記錄。

&n