前言
相比于列表,字典是更為靈活的一種數(shù)據(jù)結(jié)構(gòu)。它能將相關(guān)信息關(guān)聯(lián)起來(lái),本文中我們一起來(lái)學(xué)習(xí) Python字典 的基本用法,即如何添加、訪問(wèn)、修改和刪除字典中的信息。
1.最簡(jiǎn)單的字典
在學(xué)習(xí)Python字典之前,我們一起來(lái)看一下字典到底是個(gè)什么玩意兒,這樣有助于對(duì)其建立大體的印象,把抽象的概念具體化。
舉個(gè)例子,假如你正在幫助學(xué)校開(kāi)發(fā)學(xué)生管理系統(tǒng),需要保存單個(gè)學(xué)生的詳細(xì)信息(學(xué)號(hào)、姓名、性別、年齡等),你會(huì)怎么做?
這種問(wèn)題隨著我們學(xué)習(xí) Python 的逐步深入,解決方法也多種多樣。
如果是個(gè)初學(xué)者,只學(xué)了基本數(shù)據(jù)類型:
num
=
'123456'
# 學(xué)號(hào)
name
=
'kelvin'
# 姓名
age
=
18
# 年齡
gender
=
'male'
# 性別
這樣做數(shù)據(jù)是保存了,但是在實(shí)際開(kāi)發(fā)中,往往需要保存多個(gè)學(xué)生的信息。
初學(xué)者往往會(huì)這樣解決問(wèn)題:
num1
=
'123456'
name1
=
'kelvin'
age1
=
18
gender1
=
'male'
num2
=
'654321'
name2
=
'vicky'
age2
=
20
gender2
=
'female'
.
.
.
.
.
.
看似解決了保存多個(gè)學(xué)生的問(wèn)題,但還是有些問(wèn)題:
-
沒(méi)有清晰的結(jié)構(gòu),我們?cè)谶壿嬌峡梢灾纍um1,name1,age1,gender1是屬于學(xué)生1的信息,但是代碼里卻沒(méi)有某種結(jié)構(gòu)表示這種從屬關(guān)系。
-
命名難度太大,一個(gè)學(xué)生有4個(gè)屬性(學(xué)號(hào)、姓名、性別、年齡),兩個(gè)學(xué)生就得寫(xiě)8個(gè)不重名變量,如果一個(gè)班有40個(gè)學(xué)生(不算多吧)就得寫(xiě)160個(gè)不重名變量。有人會(huì)覺(jué)得在變量名后面加數(shù)字的方法不錯(cuò),卻不利于記憶。
隨著我們的深入的學(xué)習(xí),知道了列表結(jié)構(gòu),覺(jué)得列表應(yīng)該能解決這些問(wèn)題,于是我們這樣寫(xiě):
student1
=
[
'123456'
,
'kelvin'
,
18
,
'male'
]
student2
=
[
'654321'
,
'vicky'
,
20
,
'female'
]
這樣子給人的感覺(jué)確實(shí)是整潔了不少,而且數(shù)據(jù)之間有了明顯的從屬關(guān)系,第一個(gè)方括號(hào)(
[]
)里面的數(shù)據(jù)都是學(xué)生1的,第二個(gè)方括號(hào)(
[]
)里的數(shù)據(jù)都是學(xué)生2的。
而且命名難度大大降低,一個(gè)班如果有40個(gè)同學(xué)的話,也只需要有40個(gè)不重名變量即可。
列表的使用又會(huì)導(dǎo)致新的問(wèn)題:列表內(nèi)部存儲(chǔ)數(shù)據(jù)混亂,比如我們想取學(xué)生的姓名,必須記得學(xué)生姓名的下標(biāo)對(duì)應(yīng)的是1,存儲(chǔ)學(xué)生信息的時(shí)候要按順序(學(xué)號(hào)-姓名-年齡-性別)存取,這個(gè)記憶成本就很高,一不小心就會(huì)犯錯(cuò)。
但是今天學(xué)了 Python字典,這些問(wèn)題統(tǒng)統(tǒng)不復(fù)存在:
student1
=
{
'num'
:
'123456'
,
'name'
:
'kelvin'
,
'age'
:
18
,
'gender'
:
'male'
}
student2
=
{
'num'
:
'654321'
,
'name'
:
'vicky'
,
'age'
:
20
,
'gender'
:
'female'
}
雖然可能看不懂這些代碼的含義,但應(yīng)該可以看出來(lái),第一個(gè)花括號(hào)(
{}
)里面的數(shù)據(jù)是從屬于學(xué)生1的,第二個(gè)花括號(hào)(
{}
)里的數(shù)據(jù)是從屬于學(xué)生2的。并且花括號(hào)(
{}
)內(nèi)部數(shù)據(jù)結(jié)構(gòu)清晰,用鍵值對(duì)的形式,表示出了各個(gè)數(shù)據(jù)代表的含義。
比如我想取出學(xué)生1的姓名,可以這樣寫(xiě)
student1['name']
。
相信現(xiàn)在大家對(duì)字典的作用有了起碼的認(rèn)識(shí),下面我們來(lái)具體談?wù)勛值湓趺词褂谩?
2.字典的使用
在Python中,字典是 一系列鍵值對(duì) ,每個(gè)鍵都與一個(gè)值相關(guān)聯(lián),你 可以使用鍵來(lái)訪問(wèn)與之相關(guān)聯(lián)的值 。
與鍵相關(guān)聯(lián)的的值可以是數(shù)字、字符串、列表乃至字典 。事實(shí)上,你 可以將任何Python對(duì)象用作字典中的值 。
在 Python 中,字典用放在花括號(hào){}中的一系列鍵值對(duì)表示,如前面的示例:
student1
=
{
'num'
:
'123456'
,
'name'
:
'kelvin'
,
'age'
:
18
,
'gender'
:
'male'
}
鍵值對(duì)是兩個(gè)相關(guān)聯(lián)的值。指定鍵時(shí),Python將返回與之相關(guān)聯(lián)的值。 鍵和值之間用冒號(hào)分隔,而鍵值對(duì)之間用逗號(hào)分隔 。
在字典中,只要你電腦性能足夠,你想存多少鍵值對(duì)都可以。
2.1訪問(wèn)字典中的值
訪問(wèn)字典中的值比較簡(jiǎn)單,如果我們有個(gè)student字典,我想訪問(wèn)學(xué)生的學(xué)號(hào)和姓名,可以如下:
student
=
{
'num'
:
'123456'
,
'name'
:
'kelvin'
}
print
(
student
[
'num'
]
)
print
(
student
[
'name'
]
)
上述代碼將輸出字典 student 中與
num
和
name
相關(guān)聯(lián)的值。
運(yùn)行結(jié)果如圖2-1:
圖2-12.2往字典中添加鍵值對(duì)
字典是一種動(dòng)態(tài)結(jié)構(gòu),可隨時(shí)在其中添加鍵值對(duì)。
要添加鍵值對(duì),可依次指定字典名、用方括號(hào)[]括起來(lái)的鍵和相關(guān)聯(lián)的值。
2.2.1向已有字典中添加鍵值對(duì)
下面在字典student中添加兩項(xiàng)信息:年齡和性別。如下所示:
student
=
{
'num'
:
'123456'
,
'name'
:
'kelvin'
}
print
(
student
)
student
[
'age'
]
=
18
student
[
'gender'
]
=
'male'
print
(
student
)
我們首先定義了前面一直在使用的字典student,然后打印了這個(gè)字典,顯示其未添加鍵值對(duì)時(shí)的信息。
然后我們?cè)谶@個(gè)新字典中新增了兩個(gè)鍵值對(duì)(
age
和
gender
)。
運(yùn)行結(jié)果如圖2-2:
圖2-2可以看到,以age和gender為鍵的鍵值對(duì)已經(jīng)添加進(jìn)student字典中了。
2.2.2創(chuàng)建空字典然后添加鍵值對(duì)
有的時(shí)候我們需要先創(chuàng)建一個(gè)空字典,然后往里面添加鍵值對(duì)。
可以先使用一對(duì)花括號(hào){}定義一個(gè)字典,然后再添加各個(gè)鍵值對(duì)。
我們用這種方式創(chuàng)建學(xué)生student字典:
student
=
{
}
student
[
'num'
]
=
'123456'
student
[
'name'
]
=
'kevin'
print
(
student
)
這里先用花括號(hào)創(chuàng)建了一個(gè)空字典student,然后往空字典中添加了學(xué)生學(xué)號(hào)和姓名,代碼運(yùn)行結(jié)果如圖2-3:
2.3修改字典中的值
要修改字典中的值,可依次指定字典名、用方括號(hào)[]括起來(lái)的鍵以及與該鍵相關(guān)聯(lián)的新值。
是不是很熟悉?沒(méi)錯(cuò), 修改字典的語(yǔ)法和添加鍵值對(duì)的語(yǔ)法是一樣的 。
區(qū)別在于,添加鍵值對(duì)時(shí),鍵不存在于字典中,而修改值時(shí),鍵存在于字典中。
例如,我們修改student字典中學(xué)生的姓名:
student
=
{
'num'
:
'123456'
,
'name'
:
'kelvin'
}
print
(
student
)
student
[
'name'
]
=
'vicky'
print
(
student
)
我們把student字典中的學(xué)生姓名從 kelvin 改為了 vicky。
運(yùn)行結(jié)果如圖2-4:
圖2-42.4刪除字典中的鍵值對(duì)
對(duì)于字典中不再需要的信息,可使用
del
語(yǔ)句將相應(yīng)的鍵值對(duì)徹底刪除。
使用
del
語(yǔ)句時(shí),必須指明字典名和要?jiǎng)h除的鍵。
例如,我要從字典student中,刪除學(xué)生的年齡:
student
=
{
'num'
:
'123456'
,
'name'
:
'kelvin'
,
'age'
:
18
}
print
(
student
)
del
student
[
'age'
]
print
(
student
)
上述代碼中
del
語(yǔ)句讓 Python將鍵
age
從字典student中刪除,同時(shí)刪除與這個(gè)鍵相關(guān)聯(lián)的值。
運(yùn)行結(jié)果如圖2-5:
圖2-5
鍵
age
和與其相關(guān)聯(lián)的值已經(jīng)從字典中刪除,其余鍵值對(duì)未受影響。
結(jié)尾語(yǔ)
好啦,Python字典的簡(jiǎn)單使用就先寫(xiě)到這里,學(xué)完本文,你應(yīng)當(dāng)學(xué)習(xí)到怎么創(chuàng)建、訪問(wèn)、存儲(chǔ)、修改、刪除字典中的鍵值對(duì)。
學(xué)習(xí)過(guò)程中有任何疑惑,可掃描下方二維碼及時(shí)與我聯(lián)系。
另外,文中如有不正確之處,請(qǐng)見(jiàn)諒。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
