版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章字典和集合《Python程序開發(fā)案例教程(第2版))》學(xué)習(xí)目標(biāo)/Target
掌握字典的創(chuàng)建方式,能夠使用{}和dict()函數(shù)創(chuàng)建字典掌握訪問字典的方式,能夠通過鍵訪問字典中其對應(yīng)的值掌握字典元素的添加和修改方式,能夠通過update()方法或字典的鍵添加或修改元素掌握字典元素的刪除方式,能夠根據(jù)需求選擇合適的方法從字典中刪除元素學(xué)習(xí)目標(biāo)/Target
掌握字典元素的查詢方式,能夠通過items()、keys()、values()方法查詢字典的
所有元素、所有鍵和所有值掌握集合的創(chuàng)建方式,能夠使用{}和set()函數(shù)創(chuàng)建集合掌握集合元素的基本操作,能夠添加、刪除和清空集合的元素熟悉集合操作符的用法,能夠通過操作符對集合進(jìn)行聯(lián)合、取交集、差補(bǔ)和
對稱差分操作章節(jié)概述/Summary除了之前章節(jié)介紹的數(shù)據(jù)類型,Python還提供了兩種實(shí)用且強(qiáng)大的數(shù)據(jù)類型,分別是字典和集合。字典通過鍵值對(key-value)的形式存儲數(shù)據(jù),大大提高了數(shù)據(jù)查找的效率;而集合作為無序且不包含重復(fù)數(shù)據(jù)的類型,它為處理數(shù)據(jù)唯一性提供了簡潔便捷的方法。因此,字典和集合在解決許多實(shí)際問題時(shí)發(fā)揮著重要作用。本章將帶大家學(xué)習(xí)字典和集合這兩種類型。目錄/Contents01認(rèn)識字典02字典的基本操作03集合的創(chuàng)建方式04集合操作與操作符認(rèn)識字典5.1
先定一個(gè)小目標(biāo)!掌握字典的創(chuàng)建方式,能夠使用{}和dict()函數(shù)創(chuàng)建字典5.1.1字典的創(chuàng)建方式字典的創(chuàng)建方式使用中括號“{}”創(chuàng)建列表使用dict()函數(shù)創(chuàng)建字典格式:{鍵1:值1,鍵2:值2,...}{'name':'小明','age':21,'address':'北京'}使用大括號“{}”創(chuàng)建字典時(shí),大括號中可以包含零個(gè)、一個(gè)或多個(gè)鍵值對,每個(gè)鍵值對視為字典的一個(gè)元素,多個(gè)鍵值對之間使用逗號分隔。格式:dict(鍵1=值1,鍵2=值2,...)dict(name='小明',age=21,address='北京')使用dict()函數(shù)創(chuàng)建字典時(shí),鍵和值使用“=”進(jìn)行連接。5.1.1字典的創(chuàng)建方式字典的創(chuàng)建方式5.1.1字典的創(chuàng)建方式需要注意的是,字典中的鍵是唯一的,若使用dict()函數(shù)創(chuàng)建字典時(shí)出現(xiàn)重復(fù)的鍵,則會(huì)直接提示語法錯(cuò)誤;若使用大括號創(chuàng)建字典時(shí)出現(xiàn)重復(fù)的鍵,則鍵對應(yīng)的值會(huì)被覆蓋。
先定一個(gè)小目標(biāo)!掌握訪問字典的方式,能夠通過鍵訪問字典中其對應(yīng)的值5.1.2通過鍵訪問字典通過鍵訪問字典因?yàn)樽值渲械逆I是唯一的,所以可以通過鍵獲取對應(yīng)的值。通過鍵訪問字典的語法格式如下:字典[鍵]語法格式5.1.2通過鍵訪問字典例如,創(chuàng)建一個(gè)包含三個(gè)鍵值對的字典,分別通過鍵獲取其對應(yīng)的值color_dict={'purple':'紫色','green':'綠色','black':'黑色'}print(color_dict['purple'])#獲取鍵為purple對應(yīng)的值print(color_dict['green'])#獲取鍵為green對應(yīng)的值print(color_dict['black'])#獲取鍵為black對應(yīng)的值通過鍵訪問字典當(dāng)通過鍵訪問字典時(shí),如果字典中不存在這個(gè)鍵,則會(huì)導(dǎo)致程序出現(xiàn)報(bào)錯(cuò)信息。例如,通過不存在的鍵red訪問字典color_dict。5.1.2通過鍵訪問字典print(color_dict['red'])
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例1:單詞識別5.1.3實(shí)例1:單詞識別周一到周日的英文依次為Monday、Tuesday、Wednesday、Thusday、Fridday、Saturday和Sunday,這些單詞的首字母基本都不相同,在這7個(gè)單詞的范圍之內(nèi),通過第一或前兩個(gè)字母即可判斷對應(yīng)的是哪個(gè)單詞。本實(shí)例要求編寫程序,實(shí)現(xiàn)根據(jù)第一或前兩個(gè)字母輸出Monday、Tuesday、Wednesday、Thusday、Fridday、Saturday和Sunday之中完整單詞的功能。5.1.3實(shí)例1:單詞識別使用字典保存字母與星期映射關(guān)系。接收用戶輸入表示星期的第一個(gè)字母,并轉(zhuǎn)換為小寫形式。判斷用戶輸入的字母是否正確。根據(jù)輸入的字母將輸入的數(shù)字作為索引,從列表中獲取中獎(jiǎng)信息。實(shí)現(xiàn)思路5.1.3實(shí)例1:單詞識別在Chapter05項(xiàng)目中創(chuàng)建01_word.py文件。在01_word.py中編寫代碼。運(yùn)行01_word.py文件。實(shí)現(xiàn)步驟5.1.3實(shí)例1:單詞識別字典的基本操作5.2
先定一個(gè)小目標(biāo)!掌握字典元素的添加和修改方式,能夠通過update()方法或字典的鍵添加或修改元素5.2.1字典元素的添加和修改5.2.1字典元素的添加和修改添加字典元素Python中可以使用update()方法或通過指定的鍵給字典添加元素或者修改字典的元素,如果指定的鍵存在,則會(huì)修改其對應(yīng)的值;如果指定的鍵不存在,則會(huì)在字典中添加元素。添加字典元素添加字典元素是在字典中添加一個(gè)新的鍵值對,鍵不能與字典中的其他鍵重復(fù)。add_dict={'stu1':'小明'}add_dict.update(stu2='小剛') #使用update()方法添加元素add_dict['stu3']='小蘭' #通過指定鍵添加元素print(add_dict)5.2.1字典元素的添加和修改修改字典元素修改字典元素是通過已存在的鍵獲取元素,再對元素重新賦值。modify_dict={'stu1':'小明','stu2':'小剛','stu3':'小蘭'}modify_dict.update(stu2='小強(qiáng)') #使用update()方法修改元素modify_dict['stu3']='小婷' #通過指定鍵修改元素5.2.1字典元素的添加和修改
先定一個(gè)小目標(biāo)!掌握字典元素的刪除方式,能夠根據(jù)需求選擇合適的方法從字典中刪除元素5.2.2字典元素的刪除pop()方法(1)pop()方法pop()方法可根據(jù)指定鍵刪除字典中的指定元素,若刪除成功,該方法返回目標(biāo)元素的值。5.2.2字典元素的刪除per_info={'001':'張三','002':'李四','003':'王五','004':'趙六',}print(per_info.pop('001'))#使用pop()刪除鍵為001的元素print(per_info)popitem()方法(2)popitem()方法popitem()方法用于從字典中隨機(jī)刪除一個(gè)元素,該方法之所以能隨機(jī)刪除元素,是因?yàn)樽值涞脑乇旧硎菬o序的,沒有所謂的“第一項(xiàng)”“最后一項(xiàng)”等。若刪除成功,popitem()方法會(huì)以元組的形式返回目標(biāo)元素。5.2.2字典元素的刪除per_info={'001':'張三','002':'李四','003':'王五','004':'趙六'}print(per_info.popitem())#使用popitem()方法隨機(jī)刪除元素print(per_info)clear()方法(3)clear()方法clear()方法用于清空字典中的元素。5.2.2字典元素的刪除per_info={'001':'張三','002':'李四','003':'王五','004':'趙六',}per_info.clear()#使用clear()方法清空字典中的元素print(per_info)
先定一個(gè)小目標(biāo)!掌握字典元素的查詢方式,能夠通過items()、keys()、values()方法查詢字典的所有元素、所有鍵和所有值5.2.3字典元素的查詢查詢字典的所有元素(1)items()方法使用items()方法可以查詢字典的所有元素。per_info={'001':'張三','002':'李四','003':'王五'}print(per_info.items())5.2.3字典元素的查詢查詢字典的所有元素(1)items()方法items()方法返回一個(gè)dict_items對象,該對象支持迭代操作,我們可以通過for語句遍歷dict_items對象中的數(shù)據(jù),并將這些數(shù)據(jù)以(鍵,值)的形式顯示。per_info={'001':'張三','002':'李四','003':'王五'}foriinper_info.items():print(i)5.2.3字典元素的查詢查詢字典的所有鍵(2)keys()方法使用keys()方法可以查看字典的所有鍵。per_info={'001':'張三','002':'李四','003':'王五'}print(per_info.keys())5.2.3字典元素的查詢查詢字典的所有鍵(2)keys()方法keys()方法會(huì)返回一個(gè)dict_keys對象,該對象也支持迭代操作,我們可以通過for語句遍歷輸出字典中所有的鍵。per_info={'001':'張三','002':'李四','003':'王五'}foriinper_info.keys():print(i)5.2.3字典元素的查詢查詢字典的所有值(3)values()方法values()方法返回字典中所有的值。per_info={'001':'張三','002':'李四','003':'王五','004':'趙六',}print(per_info.values())5.2.3字典元素的查詢查詢字典的所有值(3)values()方法values()方法會(huì)返回一個(gè)dict_values對象,該對象支持迭代操作,我們可以通過for語句遍歷輸出字典中所有的值。per_info={'001':'張三','002':'李四','003':'王五'}foriinper_info.values():print(i)5.2.3字典元素的查詢
先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例2:手機(jī)通訊錄5.2.4實(shí)例2:手機(jī)通訊錄隨著社交網(wǎng)絡(luò)的飛速發(fā)展和人際交往的頻繁性,我們常常需要與許多人保持聯(lián)系,并且隨時(shí)隨地能夠找到他們的聯(lián)系方式。手機(jī)通訊錄是存儲和管理聯(lián)系人信息的工具,方便用戶隨時(shí)查找聯(lián)系人的聯(lián)系方式、郵箱、地址等信息,也支持添加聯(lián)系人、修改聯(lián)系人、刪除聯(lián)系人、查看通訊錄等基本功能。5.2.4實(shí)例2:手機(jī)通訊錄手機(jī)通訊錄中包含6個(gè)功能,每個(gè)功能都對應(yīng)一個(gè)序號,用戶可以選擇序號來要求通訊錄執(zhí)行相應(yīng)的操作,具體如下。(1)添加聯(lián)系人:用戶根據(jù)提示依次輸入姓名、手機(jī)號、郵箱和地址,輸入完成后提示“保存成功”。注意,若用戶輸入的信息為空會(huì)提示“請輸入正確信息”。(2)查看通訊錄:按固定的格式輸出通訊錄每個(gè)聯(lián)系人的信息。若通訊錄中還沒有添加過聯(lián)系人,提示“通訊錄無信息”。(3)刪除聯(lián)系人:用戶根據(jù)提示輸入待刪除的聯(lián)系人姓名,若該聯(lián)系人存在于通訊錄中,則提示“刪除成功”,否則提示“該聯(lián)系人不在通訊錄中”。注意,若通訊錄中還沒有添加過聯(lián)系人,提示“通訊錄無信息”。(4)修改聯(lián)系人:用戶根據(jù)提示輸入要修改聯(lián)系人的姓名,之后按照提示分別輸入該聯(lián)系人的新姓名、新手機(jī)號、新郵箱、新地址,并輸出修改后的聯(lián)系人信息。注意,若通訊錄中還沒有添加過聯(lián)系人,提示“通訊錄無信息”。(5)查找聯(lián)系人:用戶根據(jù)提示輸入聯(lián)系人的姓名,若該聯(lián)系人存在于通訊錄中,則輸出該聯(lián)系人的所有信息,否則提示“該聯(lián)系人不在通訊錄中”。注意,若通訊錄中還沒有添加過聯(lián)系人提示“通訊錄無信息”。(6)退出:退出手機(jī)通訊錄。本實(shí)例要求編寫程序,模擬實(shí)現(xiàn)如上所述的好友管理系統(tǒng)。5.2.4實(shí)例2:手機(jī)通訊錄使用列表保存價(jià)格信息。定義空列表用于保存用戶選購商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路5.2.4實(shí)例2:手機(jī)通訊錄在Chapter05項(xiàng)目中創(chuàng)建02_address_book.py文件。在02_address_book.py中編寫代碼。運(yùn)行02_address_book.py文件。實(shí)現(xiàn)步驟5.2.4實(shí)例2:手機(jī)通訊錄集合的創(chuàng)建方式5.3
先定一個(gè)小目標(biāo)!掌握集合的創(chuàng)建方式,能夠使用{}和set()函數(shù)創(chuàng)建集合5.3集合的創(chuàng)建方式使用大括號”{}”創(chuàng)建集合當(dāng)使用大括號“{}”創(chuàng)建集合時(shí),可以直接在大括號內(nèi)包含一個(gè)或多個(gè)元素,多個(gè)元素之間會(huì)使用逗號分隔。如果大括號中有重復(fù)元素,則會(huì)自動(dòng)去除重復(fù)元素。set_one={'Python'}#創(chuàng)建包含一個(gè)元素的集合set_two={0.3,1,'Python'}#創(chuàng)建包含多個(gè)元素的集合set_three={0.3,1,1,'Python'}#創(chuàng)建包含多個(gè)元素的集合,有重復(fù)元素print(set_one)print(set_two)print(set_three)5.3集合的創(chuàng)建方式使用set()函數(shù)創(chuàng)建集合使用set()函數(shù)同樣可以創(chuàng)建集合,set()函數(shù)必須接收一個(gè)可迭代對象,它會(huì)將可迭代對象中的元素作為集合的初始元素,并自動(dòng)去除重復(fù)的元素,如此便可以創(chuàng)建一個(gè)沒有重復(fù)元素的集合。set_one=set([1,1,2,3])#根據(jù)列表創(chuàng)建集合set_two=set((2,3,4))#根據(jù)元組創(chuàng)建集合set_three=set('Hello')#根據(jù)字符串創(chuàng)建集合set_four=set()
#創(chuàng)建空集合print(set_one)print(set_two)print(set_three)print(set_four)5.3集合的創(chuàng)建方式集合操作與操作符5.4
先定一個(gè)小目標(biāo)!掌握集合元素的基本操作,能夠添加、刪除和清空集合的元素5.4.1集合元素的添加、刪除和清空添加元素5.4.1集合元素的添加、刪除和清空
add(元素)update(可迭代對象)語法格式add()或update()方法用于向集合中添加元素,不同的是,add()方法一次只能添加一個(gè)元素,而update()方法一次可以添加多個(gè)元素。demo_set=set()demo_set.add('py')#使用add()方法向集合中添加一個(gè)元素'py'demo_set.update('thon')#使用update()方法向集合中添加多個(gè)元素demo_set.add('py')#使用add()方法向集合中再次添加'py'print(demo_set)因?yàn)榧喜荒馨貜?fù)元素,所以當(dāng)使用add()或update()方法向集合內(nèi)添加元素時(shí),若當(dāng)前集合已經(jīng)存在這個(gè)元素,則不會(huì)進(jìn)行添加操作。添加元素5.4.1集合元素的添加、刪除和清空刪除元素(1)remove()方法remove()方法用于刪除集合中的指定元素,若指定的元素不在集合中,則會(huì)導(dǎo)致程序出現(xiàn)KeyError錯(cuò)誤,示例代碼如下。remove_set={'red','green','black'}remove_set.remove('red')#刪除指定元素,該元素在集合中print(remove_set)remove_set.remove('blue')#刪除指定元素,該元素不在集合中print(remove_set)5.4.1集合元素的添加、刪除和清空刪除元素(2)discard()方法discard()方法也可以刪除指定的元素,但若指定的元素不存在,該方法不執(zhí)行任何操作,示例代碼如下。discard_set={'python','php','java'}discard_set.discard('java')#刪除指定元素,該元素在集合中discard_set.discard('ios')#刪除指定元素,該元素不在集合中print(discard_set)5.4.1集合元素的添加、刪除和清空刪除元素(3)clear()方法如果需要清空集合中的元素,那么可以使用clear()方法實(shí)現(xiàn),示例代碼如下。clear_set={'red','green','black'}clear_set.clear()#清空集合中的所有元素print(clear_set)5.4.1集合元素的添加、刪除和清空
先定一個(gè)小目標(biāo)!熟悉集合操作符的用法,能夠通過操作符對集合進(jìn)行聯(lián)合、取交集、差補(bǔ)和對稱差分操作5.4.2集合類型的操作符Python支持通過操作符|、&、-、^對兩個(gè)集合進(jìn)行聯(lián)合、交集、差補(bǔ)和對稱差分操作。已知有set_a={'a','c'}和set_b={'b','c'},使用陰影部分表示這兩個(gè)集合執(zhí)行聯(lián)合、交集、差補(bǔ)和對稱差分操作的結(jié)果。5.4.2集合類型的操作符操作符“|”(1)操作符“|”操作符“|”用于對兩個(gè)集合進(jìn)行聯(lián)合操作,將兩個(gè)集合的所有元素合并成一個(gè)新的集合,示例代碼如下。set_a={'a','c'}set_b={'b','c'}print(set_a|set_b)#使用|操作符對兩個(gè)集合進(jìn)行聯(lián)合操作5.4.2集合類型的操作符操作符“&”(2)操作符“&”操作符“&”用于對兩個(gè)集合進(jìn)行交集操作,將兩個(gè)集合中共有的元素提取為一個(gè)新集合,示例代碼如下。set_a={'a','c'}set_b={'b','c'}print(set_a&set_b)#使用&操作符對兩個(gè)集合進(jìn)行交集操作5.4.2集合類型的操作符操作符“-”(3)操作符“-”操作符“-”用于對兩個(gè)集合進(jìn)行差補(bǔ)操作,將只屬于一個(gè)集合或者只屬于另一個(gè)集合的元素組成新的集合,示例代碼如下。set_a={'a','c'}set_b={'b','c'}print(set_a-set_b)#使用-操作符獲取只屬于集合set_a的元素print(set_b-set_a)#使用-操作符獲取只屬于集合set_b的元素5.4.2集合類型的操作符操作符“^”(4)操作符“^”操作符“^”用于對兩個(gè)集合進(jìn)行對稱差分操作,將只屬于集合set_a與只屬于集合set_b中元素組成一個(gè)新集合,示例代碼如下。set_a={'a','c'}set_b={'b','c'}print(set_a^set_b)#使用^操作符獲取只屬于set_a和只屬于set_b的元素5.4.2集合類型的操作符列表、元組、字典和集合的區(qū)別列表、元組、字典和集合都是相對復(fù)雜的數(shù)據(jù)類型,它們都擁有不同的特點(diǎn),下面分別從可變性、唯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年UPS產(chǎn)品保修及售后服務(wù)條款2篇
- 2024年版加油服務(wù)全面承包協(xié)議模板版B版
- 2024-2030年中國實(shí)時(shí)數(shù)據(jù)庫行業(yè)發(fā)展模式規(guī)劃分析報(bào)告
- 2024-2030年中國城市配送行業(yè)發(fā)展模式規(guī)劃分析報(bào)告
- 2024年獨(dú)家版:新材料研發(fā)與技術(shù)轉(zhuǎn)讓合同
- 2024年物業(yè)管理與保養(yǎng)服務(wù)合同書版B版
- 2024年技術(shù)服務(wù)與維護(hù)合同
- 2024年挖掘機(jī)租賃期間的保險(xiǎn)責(zé)任合同
- 2025個(gè)人承包快遞運(yùn)輸合同
- 單位人力資源管理制度展示大全
- FMEA-培訓(xùn)教材-汽車fmea培訓(xùn)課件
- 《項(xiàng)目進(jìn)度管理研究文獻(xiàn)綜述》
- 信用風(fēng)險(xiǎn)加權(quán)資產(chǎn)計(jì)量與管理手冊課件
- 光伏項(xiàng)目試驗(yàn)報(bào)告
- 小學(xué)“雙減”作業(yè)設(shè)計(jì):小學(xué)數(shù)學(xué)四年級上冊作業(yè)設(shè)計(jì)案例
- 知識產(chǎn)權(quán)法(英文) Intellectual Property Right Law課件
- 綜合評分法評分表(建設(shè)工程)
- SBS卷材防水施工工藝
- 深化設(shè)計(jì)確認(rèn)記錄
- 小學(xué)生心理健康教育課件
- 熱力管道焊接技術(shù)交底記錄大全
評論
0/150
提交評論