Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Python 字典dict
匿名網(wǎng)友發(fā)布于:2023-09-12 10:43:29
(侵權(quán)舉報(bào))

Python 7天快速入門(mén)完整視頻教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

 

Python    字典dict

 

 

字典dict

 

字典也是Python提供的一種常用的數(shù)據(jù)結(jié)構(gòu),它用于存放具有映射關(guān)系的數(shù)據(jù)。

 

字典的定義

 

比如有成績(jī)表數(shù)據(jù)——語(yǔ)文:68,數(shù)學(xué):98,英語(yǔ): 76,這組數(shù)據(jù)看上去像兩個(gè)列表,但這兩個(gè)列表的元素之間有一定的關(guān)聯(lián)關(guān)系。如果單純使用兩個(gè)列表來(lái)保存這組數(shù)據(jù),則無(wú)法記錄兩組數(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ù)可通過(guò)key來(lái)訪問(wèn),被稱為 value。形象地看,字典中key和 value的關(guān)聯(lián)關(guān)系如下圖所示。

Python    字典dict  圖1

 

字典的定義;

字典賦值定義

dict1={ key:value , key:value , ... , key:value }

空字典定義

dict2={}

dict3=dict()

案例:

 

# 字典賦值定義
dict1 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 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={'語(yǔ)文': 68, '數(shù)學(xué)': 98, '英語(yǔ)': 76},type=<class 'dict'>
dict2={},type=<class 'dict'>
dict3={},type=<class 'dict'>

 

注意點(diǎn):key不能重復(fù),否則新的key:value會(huì)覆蓋老的key:value

 

dict4 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76, "數(shù)學(xué)": 100}
print(f"dict4={dict4},type={type(dict4)}")

 

運(yùn)行結(jié)果:

 

dict4={'語(yǔ)文': 68, '數(shù)學(xué)': 100, '英語(yǔ)': 76},type=<class 'dict'>

 

 

字典的嵌套

 

復(fù)雜業(yè)務(wù)邏輯下,我們可以通過(guò)字典的嵌套。

字典的key和value可以是任意數(shù)據(jù)類型,但是key不能是字典類型

我們舉例,設(shè)計(jì)學(xué)生的成績(jī)單。

 

dict5 = {
    "張三": {"語(yǔ)文": 58, "數(shù)學(xué)": 38, "英語(yǔ)": 16},
    "李四": {"語(yǔ)文": 78, "數(shù)學(xué)": 58, "英語(yǔ)": 96},
    "王五": {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
}
print(f"dict5={dict5},type={type(dict5)}")

 

 

字典的常用方法

 

1,通過(guò)key值來(lái)獲取對(duì)應(yīng)的value 語(yǔ)法:字典["Key"] 也可以單引號(hào),如果訪問(wèn)的key在字典里不存在,則報(bào)錯(cuò);

增強(qiáng)方法:get("key"),根據(jù)key獲取對(duì)應(yīng)的value值。假如不存在,不報(bào)錯(cuò),返回None

 

# 通過(guò)key值來(lái)獲取對(duì)應(yīng)的value
dict1 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
print(dict1["語(yǔ)文"])
print(dict1['數(shù)學(xué)'])
print(dict1["英語(yǔ)"])
print(dict1["體育"])
print(dict1.get("語(yǔ)文"))

dict2 = {
    "張三": {"語(yǔ)文": 58, "數(shù)學(xué)": 38, "英語(yǔ)": 16},
    "李四": {"語(yǔ)文": 78, "數(shù)學(xué)": 58, "英語(yǔ)": 96},
    "王五": {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
}
print(dict2["張三"]["數(shù)學(xué)"])
print(dict2["王五"]['英語(yǔ)'])

 

2,新增或者修改元素 語(yǔ)法 字典["Key"]=Value 如果key不存在,就是新增,如果key存在,就是修改。

update("{key:value}") 功能一樣

update("{key1:value1,key2:value2}") 但是可以一次操作多個(gè)鍵值對(duì)

 

dict3 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
# key不存在,新增元素
dict3["體育"] = 77
print(dict3)
# key存在,修改元素
dict3["數(shù)學(xué)"] = 55
print(dict3)
dict3.update({'語(yǔ)文': 10})
dict3.update({'計(jì)算機(jī)': 50})
print(dict3)
dict3.update({'語(yǔ)文': 20, '計(jì)算機(jī)2': 50})
print(dict3)

 

運(yùn)行輸出:

 

{'語(yǔ)文': 68, '數(shù)學(xué)': 98, '英語(yǔ)': 76, '體育': 77}
{'語(yǔ)文': 68, '數(shù)學(xué)': 55, '英語(yǔ)': 76, '體育': 77}
{'語(yǔ)文': 10, '數(shù)學(xué)': 55, '英語(yǔ)': 76, '體育': 77, '計(jì)算機(jī)': 50}
{'語(yǔ)文': 20, '數(shù)學(xué)': 55, '英語(yǔ)': 76, '體育': 77, '計(jì)算機(jī)': 50, '計(jì)算機(jī)2': 50}

 

3,刪除元素。語(yǔ)法 字典.pop("Key") 字典中刪除該key:value元素,然后方法返回該key的Value

 

dict4 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
print(dict4.pop("數(shù)學(xué)"))
print(dict4)

 

運(yùn)行輸出:

 

98
{'語(yǔ)文': 68, '英語(yǔ)': 76}

 

4,清空元素。語(yǔ)法:clear()

 

dict5 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
dict5.clear()
print(dict5)

 

5,獲取所有key。語(yǔ)法 字典.keys()。返回值類型的是 dict_keys 類對(duì)象

 

dict6 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
print(f"keys={dict6.keys()},type={type(dict6.keys())}")

 

運(yùn)行輸出:

 

keys=dict_keys(['語(yǔ)文', '數(shù)學(xué)', '英語(yǔ)']),type=<class 'dict_keys'>

 

6,遍歷字典 先獲取字典的keys,然后遍歷keys,通過(guò)key獲取字典值

 

dict7 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
keys = dict7.keys()
for key in keys:
    value = dict7[key]
    print(key, value)

 

運(yùn)行輸出:

 

語(yǔ)文 68
數(shù)學(xué) 98
英語(yǔ) 76

 

遍歷方式2 遍歷字典,每次拿到的也是key 以后我們就用這種簡(jiǎn)單方式,不用獲取keys

 

for key in dict7:
    value = dict7[key]
    print(key, value)

 

運(yùn)行輸出:

 

語(yǔ)文 68
數(shù)學(xué) 98
英語(yǔ) 76

 

7,統(tǒng)計(jì)字典元素的總數(shù)量,len(字典)

 

dict8 = {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76}
print(len(dict8))

 

 

作業(yè):

dict1 = { "張三": {"語(yǔ)文": 58, "數(shù)學(xué)": 38, "英語(yǔ)": 16}, "李四": {"語(yǔ)文": 78, "數(shù)學(xué)": 58, "英語(yǔ)": 96}, "王五": {"語(yǔ)文": 68, "數(shù)學(xué)": 98, "英語(yǔ)": 76} }

通過(guò)循環(huán)嵌套,打印出所有學(xué)生的各科成績(jī)。

 

 

轉(zhuǎn)載自: