Python 7天快速入門完整視頻教程:https://www.bilibili.com/video/BV1o84y1Z7J1
Python 字典dict
字典dict
字典也是Python提供的一種常用的數(shù)據(jù)結(jié)構(gòu),它用于存放具有映射關(guān)系的數(shù)據(jù)。
字典的定義
比如有成績表數(shù)據(jù)——語文:68,數(shù)學(xué):98,英語: 76,這組數(shù)據(jù)看上去像兩個列表,但這兩個列表的元素之間有一定的關(guān)聯(lián)關(guān)系。如果單純使用兩個列表來保存這組數(shù)據(jù),則無法記錄兩組數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。
為了保存具有映射關(guān)系的數(shù)據(jù),Python提供了字典,字典相當于保存了兩組數(shù)據(jù),其中一組數(shù)據(jù)是關(guān)鍵數(shù)據(jù),被稱為key;另一組數(shù)據(jù)可通過key來訪問,被稱為 value。形象地看,字典中key和 value的關(guān)聯(lián)關(guān)系如下圖所示。
字典的定義;
字典賦值定義
dict1={ key:value , key:value , ... , key:value }
空字典定義
dict2={}
dict3=dict()
案例:
# 字典賦值定義
dict1 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
print(f"dict1={dict1},type={type(dict1)}")
# 空字典定義
dict2 = {}
dict3 = dict()
print(f"dict2={dict2},type={type(dict2)}")
print(f"dict3={dict3},type={type(dict3)}")
輸出:
dict1={'語文': 68, '數(shù)學(xué)': 98, '英語': 76},type=<class 'dict'>
dict2={},type=<class 'dict'>
dict3={},type=<class 'dict'>
注意點:key不能重復(fù),否則新的key:value會覆蓋老的key:value
dict4 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76, "數(shù)學(xué)": 100}
print(f"dict4={dict4},type={type(dict4)}")
運行結(jié)果:
dict4={'語文': 68, '數(shù)學(xué)': 100, '英語': 76},type=<class 'dict'>
字典的嵌套
復(fù)雜業(yè)務(wù)邏輯下,我們可以通過字典的嵌套。
字典的key和value可以是任意數(shù)據(jù)類型,但是key不能是字典類型
我們舉例,設(shè)計學(xué)生的成績單。
dict5 = {
"張三": {"語文": 58, "數(shù)學(xué)": 38, "英語": 16},
"李四": {"語文": 78, "數(shù)學(xué)": 58, "英語": 96},
"王五": {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
}
print(f"dict5={dict5},type={type(dict5)}")
字典的常用方法
1,通過key值來獲取對應(yīng)的value 語法:字典["Key"] 也可以單引號,如果訪問的key在字典里不存在,則報錯;
增強方法:get("key"),根據(jù)key獲取對應(yīng)的value值。假如不存在,不報錯,返回None
# 通過key值來獲取對應(yīng)的value
dict1 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
print(dict1["語文"])
print(dict1['數(shù)學(xué)'])
print(dict1["英語"])
print(dict1["體育"])
print(dict1.get("語文"))
dict2 = {
"張三": {"語文": 58, "數(shù)學(xué)": 38, "英語": 16},
"李四": {"語文": 78, "數(shù)學(xué)": 58, "英語": 96},
"王五": {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
}
print(dict2["張三"]["數(shù)學(xué)"])
print(dict2["王五"]['英語'])
2,新增或者修改元素 語法 字典["Key"]=Value 如果key不存在,就是新增,如果key存在,就是修改。
update("{key:value}") 功能一樣
update("{key1:value1,key2:value2}") 但是可以一次操作多個鍵值對
dict3 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
# key不存在,新增元素
dict3["體育"] = 77
print(dict3)
# key存在,修改元素
dict3["數(shù)學(xué)"] = 55
print(dict3)
dict3.update({'語文': 10})
dict3.update({'計算機': 50})
print(dict3)
dict3.update({'語文': 20, '計算機2': 50})
print(dict3)
運行輸出:
{'語文': 68, '數(shù)學(xué)': 98, '英語': 76, '體育': 77}
{'語文': 68, '數(shù)學(xué)': 55, '英語': 76, '體育': 77}
{'語文': 10, '數(shù)學(xué)': 55, '英語': 76, '體育': 77, '計算機': 50}
{'語文': 20, '數(shù)學(xué)': 55, '英語': 76, '體育': 77, '計算機': 50, '計算機2': 50}
3,刪除元素。語法 字典.pop("Key") 字典中刪除該key:value元素,然后方法返回該key的Value
dict4 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
print(dict4.pop("數(shù)學(xué)"))
print(dict4)
運行輸出:
98
{'語文': 68, '英語': 76}
4,清空元素。語法:clear()
dict5 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
dict5.clear()
print(dict5)
5,獲取所有key。語法 字典.keys()。返回值類型的是 dict_keys 類對象
dict6 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
print(f"keys={dict6.keys()},type={type(dict6.keys())}")
運行輸出:
keys=dict_keys(['語文', '數(shù)學(xué)', '英語']),type=<class 'dict_keys'>
6,遍歷字典 先獲取字典的keys,然后遍歷keys,通過key獲取字典值
dict7 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
keys = dict7.keys()
for key in keys:
value = dict7[key]
print(key, value)
運行輸出:
語文 68
數(shù)學(xué) 98
英語 76
遍歷方式2 遍歷字典,每次拿到的也是key 以后我們就用這種簡單方式,不用獲取keys
for key in dict7:
value = dict7[key]
print(key, value)
運行輸出:
語文 68
數(shù)學(xué) 98
英語 76
7,統(tǒng)計字典元素的總數(shù)量,len(字典)
dict8 = {"語文": 68, "數(shù)學(xué)": 98, "英語": 76}
print(len(dict8))
作業(yè):
dict1 = { "張三": {"語文": 58, "數(shù)學(xué)": 38, "英語": 16}, "李四": {"語文": 78, "數(shù)學(xué)": 58, "英語": 96}, "王五": {"語文": 68, "數(shù)學(xué)": 98, "英語": 76} }
通過循環(huán)嵌套,打印出所有學(xué)生的各科成績。