# 遍历删除字典元素_第六章 字典
一、使用字典
一個(gè)簡(jiǎn)單的字典
字典是一系列鍵——值對(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ì)表示。
鍵——值對(duì)是兩個(gè)相關(guān)聯(lián)的值。指定鍵時(shí),Python將返回與之相關(guān)聯(lián)的值。鍵和值之間用冒號(hào)分隔,而鍵——值對(duì)之間用逗號(hào)分隔。在字典中,想存儲(chǔ)多少個(gè)鍵——值對(duì)都可以。最簡(jiǎn)單的字典只有一個(gè)鍵——值對(duì)。
1、訪問(wèn)字典中的值
要獲取與鍵相關(guān)聯(lián)的值,可依次指定字典名和放在方括號(hào)內(nèi)的鍵。
字典中可包含任意數(shù)量的鍵——值對(duì)。
str(new_points)是將得到的5轉(zhuǎn)換成字符串
2、添加鍵——值對(duì)
字典是一種動(dòng)態(tài)結(jié)構(gòu),可隨時(shí)在其中添加鍵——值對(duì)。要添加鍵——值對(duì),可依次指定字典名、用方括號(hào)括起的鍵和相關(guān)聯(lián)的值。
鍵—值對(duì)的排列順序與添加順序不同。(書(shū)上是這么寫(xiě)的,但是為啥我的順序相同)
Python不關(guān)心鍵——值對(duì)的添加順序,而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系。
3、先創(chuàng)建一個(gè)空字典
有時(shí)候,在空字典中添加鍵—值對(duì)是為了方便,而有時(shí)候必須這樣做。為此,可先使用一對(duì)空的花括號(hào)定義一個(gè)字典,再分行添加各個(gè)鍵——值對(duì)。
使用字典來(lái)存儲(chǔ)用戶提供的數(shù)據(jù)或在編寫(xiě)能自動(dòng)生成大量鍵——值對(duì)的代碼時(shí),通常都需要先定義一個(gè)空字典。
4、 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括號(hào)括起的鍵以及與該鍵相關(guān)聯(lián)的新值。
5、刪除鍵——值對(duì)
對(duì)于字典中不再需要的信息,可使用del語(yǔ)句將相應(yīng)的鍵—值對(duì)徹底刪除。使用del語(yǔ)句時(shí),必須指定字典名和要?jiǎng)h除的鍵。
del(alien_0['points'])換成del alien_0['points']也行
刪除的鍵—值對(duì)永遠(yuǎn)消失了
6、由類似對(duì)象組成的字典
可以使用字典來(lái)存儲(chǔ)眾多對(duì)象的同一種信息
定義好字典后,在最后一個(gè)鍵—值對(duì)的下一行添加一個(gè)右花括號(hào),并縮進(jìn)四個(gè)空格,使其與字典中的鍵對(duì)齊。另外一種不錯(cuò)的做法是在最后一個(gè)鍵—值對(duì)后面也加上逗號(hào),為以后在下一行添加鍵—值對(duì)做好準(zhǔn)備。
將較長(zhǎng)的print語(yǔ)句分成多行:
二、遍歷字典
一個(gè)Python字典可能只包含幾個(gè)鍵—值對(duì),也可能包含數(shù)百萬(wàn)個(gè)鍵—值對(duì)。鑒于字典可能包含大量的數(shù)據(jù),Python支持對(duì)字典遍歷。字典可用于以各種方式存儲(chǔ)信息,因此有多種遍歷字典的方式:可遍歷字典的所有鍵—值對(duì)、鍵或值。
1、遍歷所有的鍵——值對(duì)
要編寫(xiě)用于遍歷字典的for循環(huán),可聲明兩個(gè)變量,用于存儲(chǔ)鍵—值對(duì)中的鍵和值。對(duì)于這兩個(gè)變量,可使用任何名稱。
上面for語(yǔ)句中包含字典名和方法items(),它返回一個(gè)鍵—值對(duì)列表。
即便遍歷字典時(shí),鍵—值對(duì)的返回順序也與存儲(chǔ)順序不同(我這里還是相同)。Python不關(guān)心鍵—值對(duì)的存儲(chǔ)順序,而只跟蹤鍵和值之間的關(guān)聯(lián)關(guān)系。
2、 遍歷字典中的所有鍵
在不需要使用字典中的值時(shí),方法keys()很有用。
遍歷字典時(shí),會(huì)默認(rèn)遍歷所有的鍵,因此,如果將上述代碼中的for name in favorite_language.keys():替換為for name in favorite_language:輸出將不變。顯式地使用方法keys()可讓代碼更容易理解。
3、按順序遍歷字典中的所有鍵
字典總是明確地記錄鍵和值之間的關(guān)聯(lián)關(guān)系,但獲取字典的元素時(shí),獲取順序是不可預(yù)測(cè)的。這不是問(wèn)題,因?yàn)橥ǔD阆胍闹皇谦@取與鍵相關(guān)聯(lián)的正確的值。
要以特定的順序返回元素,一種辦法是在for循環(huán)中對(duì)返回的鍵進(jìn)行排序。為此,可使用函數(shù)sorted()來(lái)獲得按特定順序排列的鍵列表的副本。
4、遍歷字典中的所有值
方法values()返回一個(gè)值列表,而不包含任何鍵。
這種做法提取字典中所有的值,而沒(méi)有考慮是否重復(fù)。涉及的值很少時(shí),這也許不是問(wèn)題,但如果被調(diào)查者很多,最終的列表可能包含大量的重復(fù)項(xiàng)。
為剔除重復(fù)項(xiàng),可使用集合(set)。集合類似于列表,但每個(gè)元素都必須是獨(dú)一無(wú)二的。
通過(guò)對(duì)包含重復(fù)元素的列表調(diào)用set()可讓Python找出列表中獨(dú)一無(wú)二的元素,并使用這些元素來(lái)創(chuàng)建一個(gè)集合。
三、 嵌套
有時(shí)需要將一系列字典存儲(chǔ)在列表中,或?qū)⒘斜碜鳛橹荡鎯?chǔ)在字典中,這稱為嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
1、字典列表
經(jīng)常需要在列表中包含大量的字典,而其中每個(gè)字典都包含特定對(duì)象的眾多信息。
2、在字典中存儲(chǔ)列表
每當(dāng)需要在字典中將一個(gè)鍵關(guān)聯(lián)到多個(gè)值時(shí),都可以在字典中嵌套一個(gè)列表。
3、在字典中存儲(chǔ)字典
#6-1人 #使用一個(gè)字典來(lái)存儲(chǔ)一個(gè)熟人的信息,包括名、姓、年齡和居住的城市。 #該字典應(yīng)包含鍵first_name、last_name、age和city。 #將存儲(chǔ)在該字典中的每項(xiàng)信息都打印出來(lái)。 people = {'first_name':'Si','last_name':'Zhao','age':40,'city':'Tieling',} print("The first_name is "+people['first_name']+".") print("The last_name is "+people['last_name']+".") print("His name is "+people['last_name']+" "+people['first_name']+".") print("He is "+str(people['age'])+" yesrs old.") print("He is living in "+people['city']+" now.")#6-2喜歡的數(shù)字 #使用一個(gè)字典來(lái)存儲(chǔ)一些人喜歡的數(shù)字 #請(qǐng)想出5個(gè)人的名字,并將這些名字用作字典中的鍵 #想出每個(gè)人喜歡的一個(gè)數(shù)字,并將這些數(shù)字作為值存儲(chǔ)在字典中 #打印每個(gè)人的名字和喜歡的數(shù)字 #為讓這個(gè)程序更有趣,通過(guò)詢問(wèn)朋友確保數(shù)據(jù)是真實(shí)的。 numbers = {'alice':'4','bob':'5','ken':'9','james':'8','june':'3',} print("Alice's favorite number is "+numbers['alice']+".") print("Bob's favorite number is "+numbers['bob']+".") print("ken's favorite number is "+numbers['ken']+".") print("James's favorite number is "+numbers['james']+".") print("June's favorite number is "+numbers['june']+".")#6-3詞匯表 #Python字典可用于模擬現(xiàn)實(shí)生活中的字典,但為避免混淆,我們將后者稱為詞匯表。 #想出你在前面學(xué)過(guò)的5個(gè)編程詞匯,將它們用作詞匯表中的鍵,并將它們的含義作為值存儲(chǔ)在詞匯表中。 #以整潔的方式打印每個(gè)詞匯及其含義。 #為此,你可以先打印詞匯,在它后面加上一個(gè)冒號(hào),再打印詞匯的含義; #也可在一行打印詞匯,再使用換行符(n)插入一個(gè)空行,然后在下一行以縮進(jìn)的方式打印詞匯的含義。 cihui = {'列表':'是基本數(shù)據(jù)結(jié)構(gòu)','字典':'一系列鍵——值對(duì)','變量':'不確定值的量','函數(shù)':'完成特定功能的程序','編譯':'把高級(jí)語(yǔ)言編程二進(jìn)制語(yǔ)言', } print("列表"+":"+cihui['列表']) print("字典"+":"+cihui['字典']) print("變量"+":"+cihui['變量']) print("函數(shù)"+":"+cihui['函數(shù)']) print("編譯"+":"+cihui['編譯'])#6-4詞匯表2 #既然你知道了如何遍歷字典,現(xiàn)在請(qǐng)整理你為完成練習(xí)6-3而編寫(xiě)的代碼 #將其中的一系列print語(yǔ)句替換為一個(gè)遍歷字典中的鍵和值的循環(huán)。 cihui = {'list':'是基本數(shù)據(jù)結(jié)構(gòu)','dict':'一系列鍵——值對(duì)','var':'不確定值的量','fun':'完成特定功能的程序','com':'把高級(jí)語(yǔ)言編程二進(jìn)制語(yǔ)言', } for key, value in cihui.items():print(key+": "+value)#6-5河流 #創(chuàng)建一個(gè)字典,在其中存儲(chǔ)三條大河流及其流經(jīng)的國(guó)家。 #其中一個(gè)鍵—值對(duì)可能是'nile': 'egypt'。 #使用循環(huán)為每條河流打印一條消息,如“The Nile runs through Egypt.”。 #使用循環(huán)將該字典中每條河流的名字都打印出來(lái)。 #使用循環(huán)將該字典包含的每個(gè)國(guó)家的名字都打印出來(lái)。 rivers = {'nile': 'egypt','changjiang': 'china','huanghe': 'china' } for river, country in rivers.items():print("The "+river.title()+" runs through "+country.title()+".") for river in rivers.keys():print(river.title()) for country in rivers.values():print(country.title())#6-6調(diào)查 #在6.3.1節(jié)編寫(xiě)的程序favorite_languages.py中執(zhí)行以下操作 #創(chuàng)建一個(gè)應(yīng)該會(huì)接受調(diào)查的人員名單,其中有些人已包含在字典中,而其他人未包含在字典中。 #遍歷這個(gè)人員名單,對(duì)于已參與調(diào)查的人,打印一條消息表示感謝 #對(duì)于還未參與調(diào)查的人,打印一條消息邀請(qǐng)他參與調(diào)查。 favorite_language = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',} wei = ['erin', 'june', 'bob'] for name in favorite_language:print(name.title()+", thank you for taking for the poll.") for name in wei:if name not in favorite_language:print("Hi "+name.title()+", I'm inviting you to take the poll.")#6-7人 #在為完成練習(xí)6-1而編寫(xiě)的程序中,再創(chuàng)建兩個(gè)表示人的字典 #然后將這三個(gè)字典都存儲(chǔ)在一個(gè)名為people的列表中 #遍歷這個(gè)列表,將其中每個(gè)人的所有信息都打印出來(lái)。 people_0 = {'first_name':'Si','last_name':'Zhao','age':40,'city':'Tieling',} people_1 = {'first_name':'Xing','last_name':'Wang','age':20,'city':'Beijing',} people_2 = {'first_name':'La','last_name':'La','age':35,'city':'Shenyang',} people = [people_0, people_1, people_2] for person in people:print(person)#6-8寵物 #創(chuàng)建多個(gè)字典,對(duì)于每個(gè)字典,都使用一個(gè)寵物的名稱來(lái)給它命名 #在每個(gè)字典中,包含寵物的類型及其主人的名字 #將這些字典存儲(chǔ)在一個(gè)名為pets的列表中 #再遍歷該列表,并將寵物的所有信息都打印出來(lái) pet_0 = {'type':'cat','zhuren':'alice' } pet_1 = {'type':'dog','zhuren':'bob' } pets = [pet_0, pet_1] for pet in pets:print(pet)#6-9喜歡的地方 #創(chuàng)建一個(gè)名為favorite_places的字典 #在這個(gè)字典中,將三個(gè)人的名字用作鍵 #對(duì)于其中的每個(gè)人,都存儲(chǔ)他喜歡的1~3個(gè)地方 #遍歷這個(gè)字典,并將其中每個(gè)人的名字及其喜歡的地方打印出來(lái) favorite_places = {'alice':['hangzhou', 'sanya'],'bob':['yunnan','chongqing'],'june':['sichuan', 'caoyuan', 'dalian'] } for name, places in favorite_places.items():print("n"+name.title()+"'s favorite places are: ")for place in places:print(place.title())#6-10喜歡的數(shù)字 #修改為完成練習(xí)6-2而編寫(xiě)的程序 #讓每個(gè)人都可以有多個(gè)喜歡的數(shù)字 #然后將每個(gè)人的名字及其喜歡的數(shù)字打印出來(lái) numbers = {'alice':['4','6','9'],'bob':['5','4','7','9'],'ken':['2','5','8'],'james':['8','6','4'],'june':['3','6','9'],} for name, numbers in numbers.items():print(name.title()+"'s favorite numbers are:")for number in numbers:print(number)#6-11城市 #創(chuàng)建一個(gè)名為cities的字典,其中將三個(gè)城市名用作鍵 #對(duì)于每座城市,都創(chuàng)建一個(gè)字典,并在其中包含該城市所屬的國(guó)家、人口約數(shù)以及一個(gè)有關(guān)該城市的事實(shí) #在表示每座城市的字典中,應(yīng)包含country、population和fact等鍵 #將每座城市的名字以及有關(guān)它們的信息都打印出來(lái) cities = {'sanya':{'country':'china','population':300000,'fact':'nanfang',},'yunnan':{'country':'china','population':5000000,'fact':'nanfang',},'dalian':{'country':'china','population':200000,'fact':'beifang',}, } for city_name, city_info in cities.items():print("nCity:"+city_name.title())population = city_info['population']fact = city_info['fact']print("t有"+ str(population) +"人口")print("t在"+fact)總結(jié)
以上是生活随笔為你收集整理的# 遍历删除字典元素_第六章 字典的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php gmssl,GmSSL是什么
- 下一篇: 对比Oracle和Mysql在锁机制上的