這一篇教程,我們來了解Python中的第四種數據結構–字典(dict)。
字典同樣是一個序列,不過字典的元素是由key(鍵,可理解爲關鍵字或名稱)與values(值)組成。
就好像我們查字典,一個拼音對應着與之關聯的一個或多個漢字,拼音就key,而對應的漢字就是values。
字典兩側和集合一樣是大括號,其中每一個元素都是“key:values”的形式,並且每個元素間以逗號分隔。
例如:{‘yue’:[‘月’,’約’,’樂’],’ri’:’日’,’le’:’了’,’liao’:’了’}
字典中的值沒有特定順序,但必須用一個特定的鍵存儲。
字典的鍵必須是不可變的數據類型,可以是數字、字符串或者元組。
說明:這種能夠通過名稱引用值的數據類型稱做映射(Mapping),字典是Python中唯一內建的映射類型。映射的概念好像比較難懂,以我個人的理解,映射就是名稱集合與值集合的對應關係,一個名稱可以對應不同的值,但是一個值只能有唯一的名稱。
使用字典需要注意以下幾點:
- 字典中不能夠出現相同的鍵,但可以出現相同的值。
- 字典中的鍵不能夠更改,但值可以更改。
- 字典的值可以爲Python中的任何對象。
接下來,我們來看一下關於字典的相關操作。
1、創建字典
創建字典可以直接按格式創建,也可以使用dict()方法進行創建。
dict(**kwarg):參數**kwarg爲可變關鍵字參數。
dict(mapping, **kwarg):參數mapping爲映射函數。
dict(iterable, **kwarg):參數iterable爲可迭代對象。
示例代碼:
d = {} # 創建空字典
d = dict() # 創建空字典
d = {'yue':['月','約','樂'],'ri':'日','le':'了','liao':'了'} # 創建字典
d = dict(小樓='好帥', 蒼井='好美') # 通過可變參數創建字典
d = dict([('小樓','好帥'), ('蒼井','好美')]) # 通過可迭代對象(列表)創建字典
另外,還有一種字典的創建方式,通過fromkeys(seq,value)方法進行創建,參數seq爲包含key的序列,參數value爲key的默認值。
示例代碼:
k = ['小樓','明步'] # key的列表 d1 = dict.fromkeys(k) # 從key的列表創建字典 d2 = dict.fromkeys(k,'哦哦') # 從key的列表創建字典,並賦予默認值 print (d1) # 顯示輸出結果爲:{'小樓': None, '明步': None} print (d2) # 顯示輸出結果爲:{'小樓': '哦哦', '明步': '哦哦'}
2、查詢元素
首先,查詢字典中的元素。
我們可以使用items()方法,通過items()方法可以獲取到字典中所有元素的迭代器。
提示:關於迭代器,大家可以暫時不用關心,在後面的教程中有專門的講解。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.items()) # 顯示輸出結果爲:dict_items([('小樓', '好帥'), ('蒼井', '好美')])
然後,查詢字典中元素的鍵。
我們可以使用keys()方法,通過keys()方法可以獲取到字典中所有元素鍵的迭代器。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.keys()) # 顯示輸出結果爲:dict_keys(['小樓', '蒼井'])
最後,查詢字典中元素的值。
查詢元素值有多種方法:
第一種,通過鍵可以獲取相對應的值:字典[鍵]
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d['小樓']) # 顯示輸出結果爲:好帥 print (d['蒼井']) # 顯示輸出結果爲:好美
第二種,通過get(k,default)方法查詢,參數k爲查詢的鍵,參數default爲未查詢到結果時的默認值。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.get('小樓', '男神')) # 顯示輸出結果爲:好帥 print (d.get('櫻井', '女神')) # 顯示輸出結果爲:女神
第三種、通過values()方法可以獲取到字典中所有元素值的迭代器。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.values()) # 顯示輸出結果爲:dict_values(['好帥', '好美'])
3、添加元素
添加單個元素:
首先,可以通過“字典[鍵]=值”的方式進行添加,如果字典中不存在相同的鍵則自動添加,否則修改已存在的鍵所對應的值。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} d['櫻井'] = '好棒' # 添新元素到字典 d['明步'] = '好大', '好白' # 添加值爲元組的新元素到字典 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好棒', '明步': ('好大', '好白')}
另外,還可以通過setdefault(k,default)方法進行添加,參數k爲指定的鍵,參數default爲默認值。當字典中存在指定的鍵時,能夠返回該鍵所對應的值;如果不存在指定的鍵時,則會返回參數default中設置的值,同時,在字典中會添加新元素,新元素的鍵即爲參數k,值即爲參數default。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.setdefault('小樓', '好棒')) # 字典中存在相應的鍵,則返回該鍵對應的值,顯示輸出結果爲:好帥 print (d.setdefault('櫻井', '好爽')) # 字典中不存在相應的鍵,則返回default參數的值,顯示輸出結果爲:好爽 print (d) # 當字典中不存在相應的鍵時,添加新元素,顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好爽'}
添加多個元素:通過update(m,kwargs)方法進行添加,參數m(mapping)爲映射函數,kwargs爲可變參數。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 d.update(櫻井='好白', 明步='好大') # 通過可變參數添加多個元素 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好白', '明步': '好大'}
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 d.update((('櫻井','好白'),('明步','好大'))) # 通過元組添加多個元素 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好白', '明步': '好大'}
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 d.update([('櫻井','好白'),('明步','好大')]) # 通過列表添加多個元素 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好白', '明步': '好大'}
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 d.update({'櫻井': '好白', '明步': '好大'}) # 通過字典添加多個元素 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好白', '明步': '好大'}
d1 = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 d2 = {'櫻井': '好白', '明步': '好大'} # 創建字典 d1.update(d2) # 合併字典元素 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好白', '明步': '好大'}
4、修改元素值
修改某個鍵對應的元素:字典[鍵]=新值
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 d['小樓'] = '好棒' print (d) # 顯示輸出結果爲:{'小樓': '好棒', '蒼井': '好美'}
5、刪除元素
使用del指令可以通過鍵刪除某個元素:del 字典[鍵]
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 del d['蒼井'] # 刪除元素 print (d) # 顯示輸出結果爲:{'小樓': '好帥'}
6、取出元素與元素值
我們可以使用popitem()方法在字典中取出元素。
示例代碼:
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.popitem()) # 顯示輸出結果爲:('蒼井', '好美') print (d) # 顯示輸出結果爲:{'小樓': '好帥'}
並且,我們可以使用pop(k,default)方法在字典中取出指定元素的值,參數k爲指定元素的鍵,參數default爲未取到結果時的默認值。
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.pop('小樓')) # 顯示輸出結果爲:好帥 print (d.pop('櫻井', '好爽')) # 顯示輸出結果爲:好爽 print (d) # 顯示輸出結果爲:{'蒼井': '好美'}
7、設置默認值
d = {'小樓': '好帥', '蒼井': '好美'} # 創建字典 print (d.setdefault('小樓', '好棒')) # 顯示輸出結果爲:好帥 print (d.setdefault('櫻井', '好爽')) # 顯示輸出結果爲:好爽 print (d) # 顯示輸出結果爲:{'小樓': '好帥', '蒼井': '好美', '櫻井': '好爽'}
8、其他
字典也支持使用以下方法:
clear():清空字典
copy():複製字典:
len():獲取字典元素數量
max():獲取字典中最大的鍵
min():獲取字典中最小的鍵
同時,字典也支持通過in和not in進行成員關係的判斷。
大家可以參照集合中這些方法的使用,在此不做舉例。
本節知識點:
數據結構(字典)的相關操作。
本節英文單詞與中文釋義:
1、dict:字典
2、key:鍵/關鍵字
3、value:值
4、item:項
5、mapping:映射
6、seq(sequence):序列
7、from:從/來自
8、get:獲取
9、default:默認
10、none:沒有
11、arg:可變元素
12、kwargs(keyword args):可變關鍵字元素