字典 (dict) 的增刪改查及其餘方法

1、字典的簡介  

  字典是python中惟一的映射類型,採用鍵值對(key-value)的形式存儲數據。python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,因此字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數字、字符串、元組。

  字典(dictionary)是除列表意外python之中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對象集合。二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。

2、增長字典元素的方法

▷list['key'] = vaule

這種方法是經過字典的kye給字典添加元素,若是字典裏已存在該key的值,則會覆蓋,若是不存在,則會添加,以下如:python

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 
3 dic['addr'] = 'henan'
4 print(dic)
5 #輸出結果爲:{'age': 29, 'addr': 'henan', 'name': 'fuyong', 'job': 'none'}

6 dic['addr'] = 'xinyang'
7 print(dic)
8 #輸出結果爲:{'age': 29, 'addr': 'xinyang', 'name': 'fuyong', 'job': 'none'}

 

▷setdefault()方法:

此方法是根據函數對字典進行增添元素,參數爲(‘key’,‘value’) value默認爲none數據結構

與直接用 dict[key] = value 的添加元素方法不一樣,用setdefault(key,value)方法的時候,若是字典沒有該key的時候,則會正常添加,若是以及有了該key,那麼將不進行操做(不會覆蓋原來的值)函數

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.setdefault('name','lixiang')
3 print(dic)  #結果不會改變: {'age': 29, 'name': 'fuyong', 'job': 'none'}
4 
5 dic.setdefault('height')
6 print(dic)  #結果:{'age': 29, 'name': 'fuyong', 'height': None, 'job': 'none'}
7 
8 dic.setdefault('addr','henan')
9 print(dic) #結果 {'addr': 'henan', 'age': 29, 'name': 'fuyong', 'height': None, 'job': 'none'}

 

3、刪除字典元素的方法

▷pop(key)方法:spa

與列表的pop()方法不一樣,字典的pop()方法必須得給它傳一個key值,若是字典裏沒有該key,則會報錯。code

也能夠用 pop(key,'返回值') 來指定返回值,此時,當找不到key的時候,則不會報錯,會將指定的返回值返回對象

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.pop('job')
3 print(dic)  #結果爲:{'age': 29, 'name': 'fuyong'}
4 
5 dic.pop('job')
6 print(dic)  #此時以及沒有job的key,就會報錯 KeyError: 'job'
print(dic.pop('addr','henan'))  #此時雖然找不到‘addr’key,可是不會報錯,而且將‘henan’返回 
print(dic)             #此時字典沒有被改變 :{'name': 'fuyong', 'age': 29}
 

▷popitem()方法:blog

此方法相似於列表的pop()方法,用來隨機刪除一個元素,返回刪除的那個元素的(健,值),以下:索引

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 print(dic.popitem())  #結果爲('name', 'fuyong')
3 print(dic)          #結果爲:{'job': 'none', 'age': 29}

▷del list[key]字符串

此方法用來刪除字典種指定key以及它所對應的value,若是找不到該key,則會報錯,以下:get

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 del dic['job']
3 print(dic) #結果爲:{'age': 29, 'name': 'fuyong'}
4 
5 del dic['job']
6 print(dic)  #此時字典裏已經沒有job值,則會報錯:KeyError: 'job'

▷clear()方法:

該方法與列表的clear()方法相似,用來清空字典,以下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.clear()
3 print(dic)   #結果爲:{}

▷del dic

該方法用來刪除整個字典,以下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 del dic
3 print(dic)   #此時dic已經被刪除,不存在了,因此會報錯:NameError: name 'dic' is not defined

 

4、修改字典元素的方法

▷list['key'] = vaule

這種方法是經過字典的kye來修改對應的value值,若是字典裏已存在該key的值,則會修改,若是不存在,則會從新添加

1  dic = {'name':'fuyong','age':29,'job':'none'}
2  
3 dic['addr'] = 'henan'  #此時沒有addr的key  則會添加
4 print(dic)
5 #輸出結果爲:{'age': 29, 'addr': 'henan', 'name': 'fuyong', 'job': 'none'}
6 
7 dic['addr'] = 'xinyang' #此時以及有addr的key  則會修改
8 print(dic)
9 #輸出結果爲:{'age': 29, 'addr': 'xinyang', 'name': 'fuyong', 'job': 'none'}

▷update({key:value})方法:

該方法是用來追加、拓展原字典元素。

參數必須爲一個字典,以下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.update({'addr':'henan'})
3 print(dic)      #結果爲:{'job': 'none', 'addr': 'henan', 'age': 29, 'name': 'fuyong'}

若是傳入的字典裏有部分key與原字典相同,則該key所對應的值會被覆蓋,其餘沒有的key則會被添加,以下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.update({'addr':'henan','name':'lixiang'})
3 print(dic)
4 #結果爲:{'addr': 'henan', 'name': 'lixiang', 'job': 'none', 'age': 29}

5、查詢字典元素的方法

▷dic[key]

能夠經過key來索引查詢字典的元素,若是查不到,則會報錯

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 print(dic['name'])    #結果爲:fuyong
3 print(dic['addr'])     #搜索不到,會報錯。KeyError: 'addr'

▷get(key)方法:

該方法是用指定索引的方法來查找其所對應的元素,若是找不到,不會報錯,能夠經過 dic.get(key,'返回值') 方法指定找不到key時候的返回值,以下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 print(dic.get('name'))  #結果爲:fuyong
3 print(dic.get('addr'))  #結果爲:none
4 print(dic.get('addr','找不到該數據')) #結果爲:找不到該數據

六、用循環的方法來遍歷字典:

▷keys()方法

此方法用來查詢字典全部的key,能夠用for循環進行遍歷

 1 dic = {'name':'fuyong','age':29,'job':'none'}
 2 print(dic.keys())
 3 # 結果:dict_keys(['name', 'age', 'job'])
 4 
 5 for key in dic.keys():
 6     print(key)
 7 # 結果爲:
 8 # job
 9 # name
10 # age

▷values()方法

此方法用來查詢字典全部的values,能夠用for循環進行遍歷

 1 dic = {'name':'fuyong','age':29,'job':'none'}
 2 print(dic.values())
 3 # 結果:dict_values(['none', 29, 'fuyong'])
 4 
 5 for value in dic.values():
 6     print(value)
 7 # 結果爲:
 8 # none
 9 # 29
10 # fuyong

▷items()方法

此方法用來查詢字典全部 的鍵值,能夠用for循環來遍歷

 1 dic = {'name':'fuyong','age':29,'job':'none'}
 2 print(dic.items())
 3 # 結果:dict_items([('job', 'none'), ('name', 'fuyong'), ('age', 29)])
 4 
 5 for k,v in dic.items():
 6     print(k,v)
 7 # 結果爲:    
 8 # job none
 9 # name fuyong
10 # age 29
相關文章
相關標籤/搜索