日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

第六章——字 典

 靜幻堂 2018-09-19
MozZhang 2018-09-18 16:25:04

昨晚,一邊看男籃比賽,一邊把第六章學(xué)完了,哈哈哈。。。

直接進(jìn)入正題,在本章中, 將學(xué)習(xí)能夠?qū)⑾嚓P(guān)信息關(guān)聯(lián)起來的Python字典。學(xué)習(xí)如何訪問和修改字典中的信息。 鑒于字典可存儲的信息量幾乎不受限制,因此我們會演示如何遍歷字典中的數(shù)據(jù)。另外,還將學(xué)習(xí)存儲字典的列表、 存儲列表的字典和存儲字典的字典。由于貼代碼塊時,沒有縮進(jìn),所以我選擇貼代碼的圖,這樣能夠清晰看到縮進(jìn),畢竟python嚴(yán)格縮進(jìn)?。。?!

6.1 一個簡單的字典

來看一個游戲, 其中包含一些外星人, 這些外星人的顏色和點(diǎn)數(shù)各不相同。 下面是一個簡單的字典, 存儲了有關(guān)特定外星人的信息:

alien_0 = {'color' : 'green', 'points' : 5}
print(alien_0['color'])
print(alien_0['points'])

字典alien_0 存儲了外星人的顏色和點(diǎn)數(shù)。 使用兩條print 語句來訪問并打印這些信息, 如下所示:

第六章——字 典

6.2 使用字典

在Python中, 字典是一系列鍵(key)—值(value)對 。 每個鍵都與一個值相關(guān)聯(lián), 可以使用鍵來訪問與之相關(guān)聯(lián)的值。 與鍵相關(guān)聯(lián)的值可以是數(shù)字、 字符串、 列表乃至字典。 事實(shí)上, 可將任何Python對象用作字典中的值。在Python中,字典用放在花括號{} 中的一系列鍵—值對表示。鍵—值 對是兩個相關(guān)聯(lián)的值。指定鍵時,Python將返回與之相關(guān)聯(lián)的值。 鍵和值之間用冒號分隔, 而鍵—值對之間用逗號分隔。 在字典中, 你想存儲多少個鍵—值對都可以。

6.2.1 訪問字典中的值

要獲取與鍵相關(guān)聯(lián)的值, 可依次指定字典名和放在方括號內(nèi)的鍵。

alien_0 = {'color' : 'green','points' : 5}
new_points = alien_0['points']
print('you just earned ' + str(new_points) + ' points!')
第六章——字 典

6.2.2 添加鍵—值對

字典是一種動態(tài)結(jié)構(gòu),可隨時在其中添加鍵—值對。 要添加鍵—值對, 可依次指定字典名、 用方括號括起的鍵和相關(guān)聯(lián)的值。

alien_0 = {'color':'green', 'points':5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
第六章——字 典

注意:

鍵—值對的排列順序與添加順序不同。 Python不關(guān)心鍵—值對的添加順序, 而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系。

6.2.3 先創(chuàng)建一個空字典

使用字典來存儲用戶提供的數(shù)據(jù)或在編寫能自動生成大量鍵—值對的代碼時, 通常都需要先定義一個空字典。

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)

6.2.4 修改字典中的值

要修改字典中的值, 可依次指定字典名、 用方括號括起的鍵以及與該鍵相關(guān)聯(lián)的新值。我們首先定義了一個表示外星人alien_0 的字典, 其中只包含這個外星人的顏色。 接下來, 我們將與鍵'color' 相關(guān)聯(lián)的值改為'yellow' 。

alien_0 = {'color':'green'}
print('the alien is ' + alien_0['color'] + '.')
alien_0['color'] = 'yellow'
print('the alien is now ' + alien_0['color']+'.')
第六章——字 典

來看一個更有趣的例子: 對一個能夠以不同速度移動的外星人的位置進(jìn)行跟蹤。 為此, 我們將存儲該外星人的當(dāng)前速度, 并據(jù)此確定該外星人將向右移動多遠(yuǎn):

第六章——字 典

第六章——字 典

6.2.5 刪除鍵—值對

對于字典中不再需要的信息, 可使用del 語句將相應(yīng)的鍵—值對徹底刪除。 使用del 語句時, 必須指定字典名和要刪除的鍵。刪除的鍵—值對將永遠(yuǎn)消失。

alien_0 = {'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)
第六章——字 典

6.2.6 由類似對象組成的字典

確定需要使用多行來定義字典時, 在輸入左花括號后按回車鍵, 再在下一行縮進(jìn)四個空格, 指定第一個鍵—值對, 并在它后面加上一個逗號。 此后你再次按回車鍵時, 文本編輯器將自動縮進(jìn)后續(xù)鍵—值對, 且縮進(jìn)量與第一個鍵—值對相同。在最后一個鍵—值對的下一行添加一個右花括號, 并縮進(jìn)四個空格, 使其與字典中的鍵對齊。 另外一種不錯的做法是在最后一個鍵—值對后面也加上逗號, 為以后在下一行添加鍵—值對做好準(zhǔn)備。

第六章——字 典

第六章——字 典

注意 :

對于較長的列表和字典, 大多數(shù)編輯器都有以類似方式設(shè)置其格式的功能。 對于較長的字典, 還有其他一些可行的格式設(shè)置方式, 因此在你的編輯器或其他源代碼中, 你可能會看到稍微不同的格式設(shè)置方式。

動手試一試

6-1 人

使用一個字典來存儲一個熟人的信息, 包括名、 姓、 年齡和居住的城市。 該字典應(yīng)包含鍵first_name 、 last_name 、 age 和city 。 將存儲在該字典中的每項信息都打印出來。

6-2 喜歡的數(shù)字

使用一個字典來存儲一些人喜歡的數(shù)字。 請想出5個人的名字, 并將這些名字用作字典中的鍵; 想出每個人喜歡的一個數(shù)字, 并將這些數(shù)字作為值存儲在字典中。 打印每個人的名字和喜歡的數(shù)字。 為讓這個程序更有趣, 通過詢問朋友確保數(shù)據(jù)是真實(shí)的。

第六章——字 典

第六章——字 典

6.3 遍歷字典

6.3.1 遍歷所有的鍵—值對

要編寫用于遍歷字典的for 循環(huán), 可聲明兩個變量, 用于存儲鍵—值對中的鍵和值。 對于這兩個變量, 可使用任何名稱。for 語句的第二部分包含字典名和方法items() , 它返回一個鍵—值對列表。 接下來, for 循環(huán)依次將每個鍵—值對存儲到指定的兩個變量中。 在前面的示例中, 我們使用這兩個變量來打印每個鍵及其相關(guān)聯(lián)的值.

第六章——字 典

第六章——字 典

注意:

即便遍歷字典時, 鍵—值對的返回順序也與存儲順序不同。 Python不關(guān)心鍵—值對的存儲順序, 而只跟蹤鍵和值之間的關(guān)聯(lián)關(guān)系。

6.3.2 遍歷字典中的所有鍵

在不需要使用字典中的值時, 方法keys() 很有用。方法keys() 并非只能用于遍歷; 實(shí)際上, 它返回一個列表(但和列表有區(qū)別), 其中包含字典中的所有鍵.

第六章——字 典

第六章——字 典

第六章——字 典

第六章——字 典

6.3.3 按順序遍歷字典中的所有鍵

字典總是明確地記錄鍵和值之間的關(guān)聯(lián)關(guān)系, 但獲取字典的元素時, 獲取順序是不可預(yù)測的。 這不是問題, 因?yàn)橥ǔD阆胍闹皇谦@取與鍵相關(guān)聯(lián)的正確的值。要以特定的順序返回元素, 一種辦法是在for 循環(huán)中對返回的鍵進(jìn)行排序。 為此, 可使用函數(shù)sorted() 來獲得按特定順序排列的鍵列表的副本,但不能使用list.sort()。

第六章——字 典

第六章——字 典

6.3.4 遍歷字典中的所有值

如果你感興趣的主要是字典包含的值, 可使用方法values() , 它返回一個值列表, 而不包含任何鍵。

第六章——字 典

第六章——字 典

這種做法提取字典中所有的值, 而沒有考慮是否重復(fù)。 涉及的值很少時, 這也許不是問題, 但如果被調(diào)查者很多, 最終的列表可能包含大量的重復(fù)項。 為剔除重復(fù)項, 可使用集合(set) 。 集合 類似于列表, 但每個元素都必須是獨(dú)一無二的。

第六章——字 典

第六章——字 典

動手試一試

6-5 河流

創(chuàng)建一個字典, 在其中存儲三條大河流及其流經(jīng)的國家。 其中一個鍵—值對可能是'nile': 'egypt' 。

  • 使用循環(huán)為每條河流打印一條消息, 如“The Nile runs through Egypt.”。
  • 使用循環(huán)將該字典中每條河流的名字都打印出來。
  • 使用循環(huán)將該字典包含的每個國家的名字都打印出來。

6-6 調(diào)查

在6.3.1節(jié)編寫的程序favorite_languages.py中執(zhí)行以下操作。

  • 創(chuàng)建一個應(yīng)該會接受調(diào)查的人員名單, 其中有些人已包含在字典中, 而其他人未包含在字典中。
  • 遍歷這個人員名單, 對于已參與調(diào)查的人, 打印一條消息表示感謝。 對于還未參與調(diào)查的人, 打印一條消息邀請他參與調(diào)查
第六章——字 典

第六章——字 典

6.4 嵌套

有時候, 需要將一系列字典存儲在列表中, 或?qū)⒘斜碜鳛橹荡鎯υ谧值渲校?這稱為嵌套 。 你可以在列表中嵌套字典、 在字典中嵌套列表甚至在字典中嵌套字典。 正如下面的示例將演示的, 嵌套是一項強(qiáng)大的功能。

6.4.1 字典列表

字典alien_0 包含一個外星人的各種信息, 但無法存儲第二個外星人的信息, 更別說屏幕上全部外星人的信息了。 如何管理成群結(jié)隊的外星人呢? 一種辦法是創(chuàng)建一個外星人列表, 其中每個外星人都是一個字典, 包含有關(guān)該外星人的各種信息。

第六章——字 典

第六章——字 典

更符合現(xiàn)實(shí)的情形是, 外星人不止三個, 且每個外星人都是使用代碼自動生成的。 在下面的示例中, 我們使用range() 生成了30個外星人:

第六章——字 典

第六章——字 典

6.4.2 在字典中存儲列表

有時候, 需要將列表存儲在字典中, 而不是將字典存儲在列表中。 例如, 你如何描述顧客點(diǎn)的比薩呢? 如果使用列表, 只能存儲要添加的比薩配料; 但如果使用字典, 就不僅可在其中包含配料列表, 還可包含其他有關(guān)比薩的描述

第六章——字 典

第六章——字 典

每當(dāng)需要在字典中將一個鍵關(guān)聯(lián)到多個值時, 都可以在字典中嵌套一個列表。 在本章前面有關(guān)喜歡的編程語言的示例中, 如果將每個人的回答都存儲在一個列表中, 被調(diào)查者就可選擇多種喜歡的語言。 在這種情況下, 當(dāng)我們遍歷字典時, 與每個被調(diào)查者相關(guān)聯(lián)的都是一個語言列表, 而不是一種語言; 因此, 在遍歷該字典的for 循環(huán)中, 我們需要再使用一個for 循環(huán)來遍歷與被調(diào)查者相關(guān)聯(lián)的語言列表:

第六章——字 典

第六章——字 典

6.4.3 在字典中存儲字典

可在字典中嵌套字典, 但這樣做時, 代碼可能很快復(fù)雜起來。 例如, 如果有多個網(wǎng)站用戶, 每個都有獨(dú)特的用戶名, 可在字典中將用戶名作為鍵, 然后將每位用戶的信息存儲在一個字典中, 并將該字典作為與用戶名相關(guān)聯(lián)的值。 在下面的程序中, 對于每位用戶, 我們都存儲了其三項信息: 名、 姓和居住地; 為訪問這些信息, 我們遍歷所有的用戶名,并訪問與每個用戶名相關(guān)聯(lián)的信息字典:

第六章——字 典

第六章——字 典

動手試一試

6-7 人 : 在為完成練習(xí)6-1而編寫的程序中, 再創(chuàng)建兩個表示人的字典, 然后將這三個字典都存儲在一個名為people 的列表中。 遍歷這個列表, 將其中每個人的所有信息都打印出來。

第六章——字 典

第六章——字 典

6-9 喜歡的地方 : 創(chuàng)建一個名為favorite_places 的字典。 在這個字典中, 將三個人的名字用作鍵; 對于其中的每個人, 都存儲他喜歡的1~3個地方。 遍歷這個字典, 并將其中每個人的名字及其喜歡的地方打印出來。

第六章——字 典

第六章——字 典

6-11 城市 : 創(chuàng)建一個名為cities 的字典, 其中將三個城市名用作鍵; 對于每座城市, 都創(chuàng)建一個字典, 并在其中包含該城市所屬的國家、 人口約數(shù)以及一個有關(guān)該城市的事實(shí)。 在表示每座城市的字典中, 應(yīng)包含country 、 population 和fact 等鍵。 將每座城市的名字以及有關(guān)它們的信息都打印出來。

第六章——字 典

第六章——字 典

6.5 小結(jié)

在本章中, 你學(xué)習(xí)了: 如何定義字典, 以及如何使用存儲在字典中的信息; 如何訪問和修改字典中的元素, 以及如何遍歷字典中的所有信息; 如何遍歷字典中所有的鍵-值對、 所有的鍵和所有的值; 如何在列表中嵌套字典、 在字典中嵌套列表以及在字典中嵌套字典。

在下一章中, 將學(xué)習(xí)while 循環(huán)以及如何從用戶那里獲取輸入。

第六章——字 典

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多