一、字典的簡介
字典是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