python?字典的概念敘述和使用方法
1. 一個簡單的字典
我們先從寫一個簡單的字典示例開始,
順便看一下 python 字典的語法。
student ={'姓名':'張三','年齡':15} #第一個值 張三是字符串類型,所以用''包裹, #第二個值是整數(shù)類型,所以沒有使用'' print(student['姓名']) print(student['年齡'])
字典和元組一樣,都用 {花括號} 來包裹中間的元素,
元組內(nèi)的元素是不可以改變的。而字典中的元素內(nèi)容都是成對的。
歪曲一點解釋的話:
我們使用列表時,如果要操作內(nèi)部的元素,列表有索引下標(biāo),
通過索引下標(biāo),我們就可以操作。而字典呢,
字典就的元素都是成對的,這也就好像我們自己來設(shè)置索引下標(biāo),
不過存儲的值是多少,我們只要記得自己設(shè)置的“索引”就可以操作到元素。
我們來看一下輸出內(nèi)容:
現(xiàn)在我們對字典有了簡單的認(rèn)識,
具體如何取使用,我們繼續(xù)看下面第二個標(biāo)題。
2. 使用字典
在 python中,字典是一系列鍵-值對,每個鍵都有一個與之對應(yīng)的值,
我們可以使用鍵來訪問相關(guān)聯(lián)的值。與鍵相關(guān)聯(lián)的值可以是數(shù)字、字符串、列表、乃至字典。
python中的任何對象都可以作為字典中的值。
2.1 訪問字典中的值
字典中可以包含任意數(shù)量的鍵-值對,想要訪問一個字典當(dāng)中的值,
需要通過與其對應(yīng)的鍵來實現(xiàn)訪問。
python student ={'姓名':'李四'} print(student['姓名'])
2.2 添加鍵-值對
字典是一種動態(tài)結(jié)構(gòu),可隨時在其中添加鍵-值對。
現(xiàn)在我們有了創(chuàng)建好的字典,那代碼如何寫才能向其中添加鍵-值對呢?
student ={'姓名':'李四'} student['年齡'] =15 student['班級'] ='3年1班' #打印整個字典 print(student)
我們來看一下添加后的結(jié)果:
這里要告訴大家一點,
鍵-值對的排列順序與添加順序不同,Python 不關(guān)心鍵-值對的添加順序,
而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系。
2.3 修改字典中的值
記不記得上篇文章,我們聊過一個話題,
就是列表 用 [方括號] 而元組 用 {花括號},字典也是用{花括號}
而三者不管是哪一個,進(jìn)行值或元素 操作的時候,都是用的[方括號]。
個人感覺還是挺合理的,前兩者有索引下標(biāo),后者隨波逐流,感覺很方便用戶使用。
我們來寫一下修改字典值的代碼吧。
student = {'姓名':'張三','年齡':15} #現(xiàn)在將 姓名更改成 李四,年齡更改為18 student['姓名'] = '李四' student['年齡'] = 19 print(student)
看一下,是不是成功修改了呢。
2.4 刪除鍵-值對
對于列表中不在需要的信息,也可以使用像刪除列表元素時的del語句進(jìn)行刪除。
看一下 del 語句刪除字典中的鍵值對該怎么寫:
# 使用 del 語句刪除時,必須指定字典名和要刪除的鍵 student = {'姓名':'張三','年齡':15} print(student) del student['年齡'] print(student) #被刪除的鍵值對是永久消失的
3. 遍歷字典
一個 python 字典可能只包含幾個鍵-值對,也可能包含數(shù)百萬個鍵-值對。
鑒于字典可能包含大量的數(shù)據(jù),python支持對字典進(jìn)行遍歷。
字典可用于各種方式存儲信息,因此有多重遍歷字典的方式:可遍歷字典的所有鍵-值對、鍵或值。
3.1 遍歷所有鍵-值對
我們先來創(chuàng)建一個存儲學(xué)生信息的字典:
student ={'姓名':'張三','年齡':'10','班級':'三年1班'}
接下來我們通過 for循環(huán)來獲取字典中的所有信息:
for key,value in student.items(): print("Key鍵\t"+key) print("Value值\t"+value)
// items( ) 這個函數(shù)會返回字典當(dāng)中的所有鍵-值
而key 和 value 是我們要遍歷字典時,用于存儲信息的臨時變量。
你也可以另起名稱,就像遍歷列表時一樣,只要見名知意即可。
我們來看一下本段代碼的執(zhí)行結(jié)果:
3.2 遍歷字典中的所有鍵
在不需要使用字典中的值時,方法 keys() 很有用。
下面我們來寫段示例,演示一下對于只遍歷鍵的情況。
student ={'姓名':'張三','年齡':'10','班級':'三年1班'} for key in student.keys(): print('key:'+key)
看一下輸出結(jié)果:
3.3 按順序遍歷字典中的所有鍵
字典明確的記錄著自己所存儲的鍵和值之間的關(guān)系,但獲取字典元素時,
獲取順序是不可預(yù)測的。
想以特定的順序返回元素,一種辦法是在for循環(huán)中對返回的鍵進(jìn)行排序。
python提供函數(shù) sorted() 來獲得按特定順序排列的鍵列表的副本。
students ={'張三':'c','李四':'python','王五':'java','趙六':'c++'} for key in sorted(students.keys()): print(key+'同學(xué),歡迎你學(xué)習(xí) python 語言')
我們來輸出看一下,sorted() 函數(shù)是否幫助我們正確的排列了列表中的鍵。
3.4 遍歷字典中的所有值
在 python 中,針對字典中保存的所有值,可使用 values() 函數(shù),
這個函數(shù)會返回一個值列表,不包含鍵。
students ={'張三':'c','李四':'python','王五':'java','趙六':'c++'} for value in students.values(): print(value)
這樣使用 values() 函數(shù)就可以成功將字典中包含的值,全部輸出。
但如果有這樣的一個問題:假如字典中保存了成千上萬的值,
通過 values 全部輸出是沒有問題了,但是成千上萬的數(shù)據(jù)量難免出現(xiàn)重復(fù)內(nèi)容。
怎樣解決重復(fù)內(nèi)容的問題呢?
我們可以借助 python 提供給我們的另一個函數(shù):set ()
students ={'張三':'c','李四':'python','王五':'java','趙六':'c++'} for value in set(students.values()): print(value)
通過set 函數(shù),將找尋字典中沒有重復(fù)內(nèi)容的所值,保存在一個集合中。
4.嵌套
有時候,我們需要將字典存儲在列表中,或者將列表作為值存儲在字典中。
這種操作稱為嵌套。
4.1 字典列表
我們使用字典存儲學(xué)生的信息,
假設(shè),第一個創(chuàng)建的字典存儲了張三同學(xué)的信息,
那么第二個同學(xué)的信息如何保存呢?
考慮到這個問題,我們可以繼續(xù)使用字典存儲同學(xué)的信息,
如果有新同學(xué)的信息需要存儲,我們就繼續(xù)創(chuàng)建新的字典,
當(dāng)學(xué)生的信息存儲完成之后,在將字典存儲到列表當(dāng)中,
使用列表來存儲所有存儲了學(xué)生信息的字典。
student1 ={'姓名':'張三','年齡':'15','班級':'初三一班'} student2 ={'姓名':'李四','年齡':'15','班級':'初三二班'} student3 ={'姓名':'王五','年齡':'15','班級':'初三一班'} students =[student1,student2,student3] for student in students: print(student)
我們來看一下遍歷列表的輸出結(jié)果:
4.2 range() 函數(shù)
上述示例中,我們創(chuàng)建每個學(xué)生存儲學(xué)生的字典,都是手動編碼的,
先不考慮信息的問題,如何解決自動創(chuàng)建呢?
我們可以借助python 提供給我們的 range() 函數(shù)
#先創(chuàng)建一個空列表 students =[] #設(shè)置批量創(chuàng)建字典存儲學(xué)生信息的過程 for student in range(30): student_zd = {'姓名':'張三','年齡':15,'班級':'初三一班'} students.append(student_zd) #遍歷列表,輸出存儲的前五個信息 for stu in students[:5]: print(stu)
輸出存儲的前五個信息時,我們就用到了前面章節(jié)中掌握的切片知識點了。
4.3 在字典中存儲列表
我們來寫一個講列表存儲在字典中的示例:
#創(chuàng)建一個用于存儲披薩信息的字典 #存儲配方時,將值的形式以列表進(jìn)行存儲 pizza ={ '品名':'榴蓮披薩', '配方':['榴蓮','白面','礦物質(zhì)水','芝麻'] } # 嘗試打印字典中的 普通形式鍵值對 print('推薦你品嘗一下:'+pizza['品名']) # 嘗試打印字典中 以列表形式存儲的鍵值對 print('榴蓮披薩是這樣做的:\n') for pa in pizza['配方']: print(pa)
將列表存儲在字典當(dāng)中,只要捋清邏輯,
其實還是很好實現(xiàn)的,我們來看一下輸出結(jié)果:
4.4 在字典中存儲字典
user ={ 'user1':{'userName':'張三','userInfo':'QQ郵箱'}, 'user2':{'userName':'李四','userInfo':'網(wǎng)易郵箱'} } #嘗試打印字典中的值 for key,value in user.items(): print('正在嘗試獲取用戶信息....') print('---------------------') print('當(dāng)前正在解析用戶:'+key+'的信息') uName = '用戶'+value['userName']+'正在以'+value['userInfo']+'的登錄形式訪問網(wǎng)站' print(uName)
在本段示例中,我們想創(chuàng)建了一個存儲用戶信息的字典,
該字典的鍵是用戶的登錄id,其實就是一個字符串。
而該鍵所對應(yīng)的值是一個嵌套的新字典,在該字典中,正常存儲信息。
在輸出時,
我們先遍歷 得到字典的key值,還有value值,
輸出用戶的信息值,也就是登錄id,直接輸出字典key即可。
而該key所對應(yīng)的字典的值,利用key[索引到字典內(nèi)部嵌套的字典的key],
其實很簡單,就是利用被嵌套字典的key輸出它的value
最后我們來看一下輸出結(jié)果:
到此這篇關(guān)于python 字典的概念敘述和使用方法的文章就介紹到這了,更多相關(guān)python 字典使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyCharm運行Python代碼時出現(xiàn)"未找到模塊"錯誤解決步驟
在使用python的過程中經(jīng)常會遇到一個問題,就是叫什么名字的模塊未發(fā)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于PyCharm運行Python代碼時出現(xiàn)"未找到模塊"錯誤的解決步驟,需要的朋友可以參考下2023-11-11python調(diào)用百度API實現(xiàn)人臉識別
這篇文章主要介紹了python調(diào)用百度API實現(xiàn)人臉識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python?Setuptools的?setup.py實例詳解
setup.py是一個?python?文件,它的存在表明您要安裝的模塊/包可能已經(jīng)用?Setuptools?打包和分發(fā),這是分發(fā)?Python?模塊的標(biāo)準(zhǔn)。?它的目的是正確安裝軟件,本文給大家講解Python?Setuptools的?setup.py感興趣的朋友跟隨小編一起看看吧2022-12-12Pandas 處理DataFrame中的inf值實現(xiàn)
Inf 表示正無窮大或負(fù)無窮大,通常是在數(shù)學(xué)計算中產(chǎn)生的結(jié)果,本文主要介紹了Pandas 處理DataFrame中的inf值實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-04-04python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy())
本文主要介紹了python中l(wèi)ist列表復(fù)制的幾種方法(賦值、切片、copy(),deepcopy()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08