詳解python的字典及相關(guān)操作
什么是字典
字典是Python中最強(qiáng)大的數(shù)據(jù)類型之一,也是Python語(yǔ)言中唯一的映射類型。映射類型對(duì)象里哈希值(鍵,key)和指向的對(duì)象(值,value)是一對(duì)多的的關(guān)系,通常被認(rèn)為是可變的哈希表,字典對(duì)象是可變的,它是一個(gè)容器類型,能存儲(chǔ)任意個(gè)數(shù)的Python對(duì)象,其中也可包括其他容器類型。
字典類型與序列類型的區(qū)別:
1.存取和訪問(wèn)數(shù)據(jù)的方式不同。
2.序列類型只用數(shù)字類型的鍵(從序列的開(kāi)始按數(shù)值順序索引);
3.映射類型可以用其他對(duì)象類型作鍵(如:數(shù)字、字符串、元組,一般用字符串作鍵),和序列類型的鍵不同,映射類型的鍵直
4.接或間接地和存儲(chǔ)數(shù)據(jù)值相關(guān)聯(lián)。
5.映射類型中的數(shù)據(jù)是無(wú)序排列的,這和序列類型是不一樣的,序列類型是以數(shù)值序排列的。
6.映射類型用鍵直接“映射”到值。
總之,Python中字典是一系列"鍵-值"對(duì),每個(gè)鍵都與一個(gè)值關(guān)聯(lián),可以使用鍵來(lái)訪問(wèn)與之相關(guān)聯(lián)的值。與鍵相關(guān)聯(lián)的值可以是數(shù)字、字符串、列表乃至字典。事實(shí)上,可將任何Python對(duì)象用作字典中的值。
一個(gè)簡(jiǎn)單字典的示例:
student_A ={'name':'Allen','age':'14','grade':'8'} # 定義一個(gè)字典 print(student_A['name']) print(student_A['age']) print(student_A['grade']) new_names = student_A['name'] new_ages = student_A ['age'] new_grades= student_A ['grade'] print("The student_A's name is " + new_names.title()+ ",and she is "+str(new_ages) +" years old,and Grade "+str(new_grades))
其中,student_A={'name':'Allen','age':'14','grade':'8'} 定義了一個(gè)名為student_A的字典,該字典中有三個(gè)關(guān)鍵字'name','age'和'grade',對(duì)應(yīng)的值分別為'Allen','14'和'8'
student_A['name'] 表示引用的是student_A['name']的值,即Allen,也就是語(yǔ)句:new_names = student_A['name'] 和new_names='Allen'是一樣的。
創(chuàng)建一個(gè)字典
1)如上述代碼,直接定義一個(gè)字典,student_A ={'name':'Allen','age':'14','grade':'8'},列出各關(guān)鍵字和對(duì)應(yīng)的值;
2)先使用一對(duì)花括號(hào)定義一個(gè)字典,再分行添加各個(gè)分鍵值對(duì):
student_B={} student_B['name']='Jack' student_B['age']=13 student_B['grade']=7
在原有字典上添加“鍵-值”對(duì)
由于字典是可變的,能存儲(chǔ)任意個(gè)數(shù)對(duì)象,因此可隨意添加
student_A['address'] ="Hubei" #增加了一個(gè)地址健值對(duì),由原來(lái)的3個(gè)變成4個(gè) student_A['PhoneNumber'] ="18012345678"#增加了一個(gè)電話健值對(duì),字典student_A里由4個(gè)變成5個(gè) print(student_A) #鍵 — 值對(duì)的排列順序與添加順序不同。Python不關(guān)心鍵-值對(duì)的添加順序,而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系
即在student_A字典原有3個(gè)關(guān)鍵字的基礎(chǔ)上,增加了兩個(gè)關(guān)鍵字address和PhoneNumber。
上述代碼運(yùn)行結(jié)果:
修改字典中的值
要修改字典中的值,可依次指定字典名、用方括號(hào)括起的鍵以及與該鍵相關(guān)聯(lián)的新值。
student_B['age']=14 #修改student_B的age值為14 print(student_B) print("\n")
刪除鍵-值對(duì)
對(duì)于字典中不再需要的信息,可使用 del 語(yǔ)句將相應(yīng)的鍵-值對(duì)徹底刪除。使用 del 語(yǔ)句時(shí),必須指定字典名和要?jiǎng)h除的鍵。
del student_A['address'] print(student_A)
由類似對(duì)象組成的字典
字典存儲(chǔ)的是一個(gè)對(duì)象(學(xué)生A或B)的多種信息,但也可以使用字典來(lái)存儲(chǔ)眾多對(duì)象的同一種信息
favor_languages = {'jack': 'python','sarah': 'c','lucy': 'ruby','phil': 'python'} print(favor_languages['lucy'])
遍歷字典
一個(gè)Python字典可能只包含幾個(gè)鍵-值對(duì),也可能包含數(shù)百萬(wàn)個(gè)鍵-值對(duì)。鑒于字典可能包含大量的數(shù)據(jù),Python支持對(duì)字典遍歷。字典可用于以各種方式存儲(chǔ)信息,因此有多種遍歷字典的方式:可遍歷字典的所有鍵-值對(duì)、鍵或值。
for key,value in student_A.items():# 注意,student_A后增加了.items() 用于讀取字典中的每一項(xiàng) print("\nKey: " + key) #打印出關(guān)鍵字 print("Value: " + value) #打印出關(guān)鍵字的值 for name, language in favor_languages.items(): #遍歷所有的鍵值對(duì):用于遍歷字典的for循環(huán),可聲明兩個(gè)變量,用于存儲(chǔ)鍵-值對(duì)中的鍵和值 print(name.title() + "'s favorite language is " +language.title() + ".") #遍歷字典中的每個(gè)鍵-值對(duì),并將鍵存儲(chǔ)在變量name中,而將值存儲(chǔ)在變量language 中 for name in favor_languages.keys():#遍歷字典中的所有鍵,在不需要使用字典中的值時(shí),方法 keys() ,注意后面增加的keys() print(name.title()) print("\n") my_friends = ['jack', 'sarah'] for name in favor_languages.keys(): print(name.title()) if name in my_friends: print(" Hi " + name.title() +", I see your favorite language is " +favor_languages[name].title() + "!")
具體運(yùn)行結(jié)果:
按順序遍歷字典中的所有鍵:字典記錄鍵和值之間的關(guān)聯(lián)關(guān)系,但獲取字典的元素的順序是不可預(yù)測(cè)的,要以特定的順序返回元素,可對(duì)返回的鍵進(jìn)行排序可使用函數(shù) sorted() 來(lái)進(jìn)行排序。
favor_languages= {'jack': 'python','polo': 'java','lucy': 'ruby','Albet': 'java'} #使用函數(shù) sorted() 來(lái)獲得按特定順序排列的鍵列表 for name in sorted(favor_languages.keys()): #對(duì)關(guān)鍵字進(jìn)行排序 print(name.title() + ", thank you !") print("\n") #遍歷字典中的所有值:如果主要獲取的是字典包含的值,可使用方法 values() for language in favor_languages.values(): print(language.title()) print("\n") #使用集合(set)消除重復(fù)項(xiàng) for language in set(favor_languages.values()): print(language.title())
運(yùn)行結(jié)果如下:
到此這篇關(guān)于詳解python的字典及相關(guān)操作的文章就介紹到這了,更多相關(guān)python字典及相關(guān)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 通過(guò)pip freeze、dowload打離線包及自動(dòng)安裝的過(guò)程詳解(適用于保密的離線環(huán)境
這篇文章主要介紹了python 通過(guò)pip freeze、dowload打離線包及自動(dòng)安裝【適用于保密的離線環(huán)境】,本文通圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12python自定義函數(shù)中的return和print使用及說(shuō)明
這篇文章主要介紹了python自定義函數(shù)中的return和print使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Python實(shí)現(xiàn)將視頻按照時(shí)間維度剪切
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)將視頻按照時(shí)間維度進(jìn)行剪切,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12pytorch::Dataloader中的迭代器和生成器應(yīng)用詳解
這篇文章主要介紹了pytorch::Dataloader中的迭代器和生成器應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01使用基于Python的Tornado框架的HTTP客戶端的教程
這篇文章主要介紹了制作一個(gè)基于Python的Tornado框架的HTTP客戶端的教程,Tornado的異步特性使其能夠獲得很好的性能,需要的朋友可以參考下2015-04-04Python3 socket即時(shí)通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線程)
這篇文章主要介紹了Python3 socket即時(shí)通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06