Python知識分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Python 字典dict
發(fā)布于:2023-09-12 10:43:29

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提供了字典,字典相當(dāng)于保存了兩組數(shù)據(jù),其中一組數(shù)據(jù)是關(guān)鍵數(shù)據(jù),被稱為key;另一組數(shù)據(jù)可通過key來訪問,被稱為 value。形象地看,字典中key和 value的關(guān)聯(lián)關(guān)系如下圖所示。

Python    字典dict  圖1

 

字典的定義;

字典賦值定義

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在字典里不存在,則報錯;

增強(qiáng)方法: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({'計算機(jī)': 50})
print(dict3)
dict3.update({'語文': 20, '計算機(jī)2': 50})
print(dict3)

 

運行輸出:

 

{'語文': 68, '數(shù)學(xué)': 98, '英語': 76, '體育': 77}
{'語文': 68, '數(shù)學(xué)': 55, '英語': 76, '體育': 77}
{'語文': 10, '數(shù)學(xué)': 55, '英語': 76, '體育': 77, '計算機(jī)': 50}
{'語文': 20, '數(shù)學(xué)': 55, '英語': 76, '體育': 77, '計算機(jī)': 50, '計算機(jī)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é)生的各科成績。

 

 

轉(zhuǎn)載自: