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


一、字典的簡介  

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

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

二、增加字典元素的方法

▷list['key'] = vaule

這種方法是通過字典的kye給字典添加元素,如果字典里已存在該key的值,則會覆蓋,如果不存在,則會添加,如下如:

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'}

 

三、刪除字典元素的方法

▷pop(key)方法:

與列表的pop()方法不同,字典的pop()方法必須得給它傳一個key值,如果字典里沒有該key,則會報錯。

也可以用 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()方法:

此方法類似於列表的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,則會報錯,如下:

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

 

四、修改字典元素的方法

▷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}

五、查詢字典元素的方法

▷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','找不到該數據')) #結果為:找不到該數據

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

▷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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM