第五講批量數(shù)據(jù)類型與操作集合與字典PPT課件_第1頁
第五講批量數(shù)據(jù)類型與操作集合與字典PPT課件_第2頁
第五講批量數(shù)據(jù)類型與操作集合與字典PPT課件_第3頁
第五講批量數(shù)據(jù)類型與操作集合與字典PPT課件_第4頁
第五講批量數(shù)據(jù)類型與操作集合與字典PPT課件_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、張張 華華WHU 201902ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作2集合與字典集合與字典集合集合字典字典ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作3集合集合集合集合的特點(diǎn)的特點(diǎn)集合是無序集合是無序的,不能的,不能通過數(shù)字進(jìn)行索引。通過數(shù)字進(jìn)行索引。集合的元素不能重復(fù)出現(xiàn)集合的元素不能重復(fù)出現(xiàn)集合的應(yīng)用集合的應(yīng)用去除列表中的重復(fù)元素去除列表中的重復(fù)元素求兩個(gè)列表的相同元素(交集)求兩個(gè)列表的相同元素(交集)求兩個(gè)列表的不同元素(差集求兩個(gè)列表的不同元素(差集)集合集合可可分為兩類分為兩類可變集合(可變集合(set):可以):可以添加和刪除添加和刪除元素元

2、素不可變集合(不可變集合(frozenset):不):不允許添加和刪除允許添加和刪除元素元素ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作4集合集合創(chuàng)建集合創(chuàng)建集合使用使用創(chuàng)建創(chuàng)建的是可變集合的是可變集合set,用用逗號(hào)分隔的數(shù)據(jù)項(xiàng)作為集合的一個(gè)元素逗號(hào)分隔的數(shù)據(jù)項(xiàng)作為集合的一個(gè)元素。空集為空集為set(),表示空的表示空的dict,因?yàn)?,因?yàn)閐ict也使用花括號(hào)定義也使用花括號(hào)定義。舉例舉例 s1=2,4,6,8,10 type(s1) s18, 10, 4, 2, 6 s2=hello s2helloZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作5集合集合創(chuàng)建集

3、合創(chuàng)建集合通過通過類型構(gòu)造器類型構(gòu)造器set()set()函數(shù)函數(shù)的參數(shù)是容器對(duì)象,可以是字符串,列表和元組,它可以的參數(shù)是容器對(duì)象,可以是字符串,列表和元組,它可以將序列的數(shù)據(jù)元素作為集合將序列的數(shù)據(jù)元素作為集合set的元素的元素。同樣還可以根據(jù)列表對(duì)象來創(chuàng)建同樣還可以根據(jù)列表對(duì)象來創(chuàng)建集合集合。 s3=set(hello) s3l, e, o, h s5=set(he,hello,her,here) s5here, hello, he, herZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作6集合應(yīng)用集合應(yīng)用列表列表去重復(fù)操作去重復(fù)操作通過通過set函數(shù)建立列表的去重復(fù)集合元素

4、,再通過函數(shù)建立列表的去重復(fù)集合元素,再通過list方法方法根據(jù)集合創(chuàng)建列表根據(jù)集合創(chuàng)建列表:L2是去重復(fù)后的列表,上面的過程也可簡單地寫為:是去重復(fù)后的列表,上面的過程也可簡單地寫為: L1 = 1,2,3,4,1,2,3,4 s4=set(L1) s41, 2, 3, 4 L2=list(s4) L21, 2, 3, 4 L2=list(set(L1) print(L2) 1, 2, 3, 4ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作7集合應(yīng)用集合應(yīng)用列表列表去重復(fù)操作練習(xí)去重復(fù)操作練習(xí)生成生成100個(gè)介于個(gè)介于0到到9999之間的之間的隨機(jī)數(shù),找出不重復(fù)的數(shù)。隨機(jī)數(shù),找

5、出不重復(fù)的數(shù)。試用兩種方法實(shí)現(xiàn)。試用兩種方法實(shí)現(xiàn)。產(chǎn)生產(chǎn)生指定指定范圍內(nèi)一定數(shù)量的不重復(fù)數(shù)字。范圍內(nèi)一定數(shù)量的不重復(fù)數(shù)字。ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作8集合集合創(chuàng)建集合創(chuàng)建集合通過通過類型構(gòu)造類型構(gòu)造器器frozenset()創(chuàng)建創(chuàng)建后的集合后的集合不能改變不能改變集合集合元素。元素。例如,創(chuàng)建一個(gè)星期的英文縮寫的不可變集合。例如,創(chuàng)建一個(gè)星期的英文縮寫的不可變集合。 s6=frozenset(MON,TUE,WED,THU,FRI,SAT,SUN) s6frozenset(SUN, WED, TUE, SAT, FRI, MON, THU)ZhangHua W

6、HU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作9集合應(yīng)用集合應(yīng)用訪問集合元素訪問集合元素由于集合本身是無序的,所以不能為集合創(chuàng)建索引或切片由于集合本身是無序的,所以不能為集合創(chuàng)建索引或切片操作操作,只能只能循環(huán)遍歷或使用循環(huán)遍歷或使用in、not in來訪問或判斷集合元素來訪問或判斷集合元素。舉例舉例 SUN in s6 True SON in s6False for day in s6:print(day, end= )SUN WED TUE SAT FRI MON THUZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作10操作集合操作集合集合的長度、最大值、最小值、元素和集合的長度、

7、最大值、最小值、元素和通過內(nèi)置函數(shù)通過內(nèi)置函數(shù)len()、max()、min()、sum(),可以獲取集,可以獲取集合的長度、元素最大值、元素最小值、元素之合的長度、元素最大值、元素最小值、元素之和。和。 s7=1,2,3,4,5,6,7,8,9 len(s7)9 max(s7)9 min(s7)1 sum(s7)45ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作11集合運(yùn)算集合運(yùn)算集合支持的運(yùn)算集合支持的運(yùn)算運(yùn)算運(yùn)算描述描述運(yùn)算運(yùn)算描述描述x in 檢測(cè)x是否在集合中s1=s2判斷集合是否相等s1|s2并集s1=s2判斷s1是否是s2的子集s1&s2交集s1=s2判斷s

8、1是否是s2的超集s1s2異或集,求s1與s2中相異元素s1s2判斷s1是否是s2的真超集s1|=s2將s2的元素并入s1 ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作12集合運(yùn)算集合運(yùn)算集合運(yùn)算舉例集合運(yùn)算舉例 s2hello s5here, hello, he, her s2 s5s2 #判斷判斷s5是否是是否是s2的真超集的真超集True s7=hen,height,her s7|=s2 #將將s2并入并入s7 s7hello, her, height, hen s7&s5 #求求s7 和和s5的交集的交集hello, her s7|s5 #求求s7 和和s5的并

9、集的并集here, her, hello, hen, he, height s7-s5 #求求s7中去除中去除s5中有的元素中有的元素height, hen s7s5 #求求s7 和和s5的中各不相同的元素的中各不相同的元素he, hen, height, hereZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作13集合運(yùn)算集合運(yùn)算集合運(yùn)算舉例集合運(yùn)算舉例判斷兩個(gè)集合是否相等,只需判斷其中包含的集合元素是判斷兩個(gè)集合是否相等,只需判斷其中包含的集合元素是否一致,與順序否一致,與順序無關(guān)。無關(guān)。 s8=he,hello, her,here s8her, hello, he, here

10、 s5here, hello, he, her s5=s7TrueZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作14集合運(yùn)算集合運(yùn)算集合運(yùn)算舉例集合運(yùn)算舉例測(cè)試指定列表中是否包含非法測(cè)試指定列表中是否包含非法數(shù)據(jù)數(shù)據(jù)。import randomlstColor = (red, green, blue)colors = random.choice(lstColor) for i in range(10000)for item in colors: #遍歷列表中的元素并逐個(gè)判斷遍歷列表中的元素并逐個(gè)判斷 if item not in lstColor: print(error:, i

11、tem) breakif (set(colors)-set(lstColor): #轉(zhuǎn)換為集合之后再比較轉(zhuǎn)換為集合之后再比較 print(error)ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作15集合對(duì)象的方法集合對(duì)象的方法集合對(duì)象的方法集合對(duì)象的方法打打星號(hào)星號(hào)*的方法是的方法是set集合獨(dú)有的方法,不打星號(hào)的方法是兩種集合集合獨(dú)有的方法,不打星號(hào)的方法是兩種集合都有的都有的方法。方法。 方法方法描述描述s1.union(s2 )s1|s2,返回一個(gè)新的集合對(duì)象s1.difference(s2)s1-s2,返回一個(gè)新的集合對(duì)象ersection(s2)s1&am

12、p;s2,返回一個(gè)新的集合對(duì)象s1.issubset(s2)s1=s2* *s1.update(s2)將s2的元素并入s1* *s1.add (x)增加元素x到s1* *s1.remove(x)從s1移除x,x不存在報(bào)錯(cuò)* *s1.clear ()清空s1s1.copy()復(fù)制s1,返回一個(gè)新的集合對(duì)象s1.union(s2 )s1|s2,返回一個(gè)新的集合對(duì)象s1.difference(s2)s1-s2,返回一個(gè)新的集合對(duì)象ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作16集合對(duì)象的方法集合對(duì)象的方法集合對(duì)象的方法集合對(duì)象的方法表中的表中的s2并不要求是相同類型的對(duì)象,只要是一個(gè)

13、可迭代并不要求是相同類型的對(duì)象,只要是一個(gè)可迭代(iterable)的對(duì)象,包括字符串、列表、元組、集合)的對(duì)象,包括字符串、列表、元組、集合。#將一個(gè)列表與集合將一個(gè)列表與集合s6聯(lián)合聯(lián)合 L1=1,2,3 s9=s6.union(L1) s9frozenset(1, 2, 3, TUE, SAT, FRI, SUN, MON, WED, THU)#判斷判斷1是否在是否在s9集合中不能用集合中不能用int類型,要用列表類型或集合類型類型,要用列表類型或集合類型 s9.difference(1)Traceback (most recent call last): File , line 1,

14、in s9.difference(1)TypeError: int object is not iterable s9.difference(1)frozenset(2, 3, SUN, WED, TUE, SAT, FRI, MON, THU)ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作17集合對(duì)象的方法集合對(duì)象的方法集合對(duì)象的方法應(yīng)用舉例集合對(duì)象的方法應(yīng)用舉例利用集合分析活動(dòng)投票利用集合分析活動(dòng)投票情況情況:兩個(gè)小隊(duì)舉行活動(dòng)評(píng)測(cè)投票,按隊(duì)員序號(hào)投票兩個(gè)小隊(duì)舉行活動(dòng)評(píng)測(cè)投票,按隊(duì)員序號(hào)投票,第一第一小隊(duì)隊(duì)員序號(hào)為小隊(duì)隊(duì)員序號(hào)為1、2、3、4、5,第二第二小隊(duì)隊(duì)員的序號(hào)為小隊(duì)隊(duì)

15、員的序號(hào)為6、7、8、9、10,可以可以對(duì)投票數(shù)據(jù)進(jìn)行分析對(duì)投票數(shù)據(jù)進(jìn)行分析,投票投票數(shù)據(jù)為數(shù)據(jù)為 1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,5,9#建立集合建立集合s2表示第一小隊(duì)隊(duì)員序號(hào),表示第一小隊(duì)隊(duì)員序號(hào),s3表示第二小隊(duì)隊(duì)員序號(hào):表示第二小隊(duì)隊(duì)員序號(hào):s2=1,2,3,4,5s3=6,7,8,9,10ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作18集合對(duì)象的方法集合對(duì)象的方法集合對(duì)象的方法應(yīng)用舉例集合對(duì)象的方法應(yīng)用舉例#使用使用投票數(shù)據(jù)建立集合投票數(shù)據(jù)建立集合s1,集合去重復(fù)后表示獲得了選票的隊(duì)員序號(hào):集合去重復(fù)后表示獲得

16、了選票的隊(duì)員序號(hào): s1=1,5,9,3,9,1,1,7,5,7,7,3,3,3,1,5,7,4,4,5,4,9,5,5,9 s11, 3, 4, 5, 7, 9#第一第一小隊(duì)獲得選票的隊(duì)員有:小隊(duì)獲得選票的隊(duì)員有: s1-s31, 3, 4, 5#第一第一小隊(duì)沒有獲得選票的隊(duì)員有:小隊(duì)沒有獲得選票的隊(duì)員有: s2-(s1-s3)2#第二第二小隊(duì)獲得選票的隊(duì)員有:小隊(duì)獲得選票的隊(duì)員有: s1-s29, 7#第二第二小隊(duì)沒有獲得選票的隊(duì)員有:小隊(duì)沒有獲得選票的隊(duì)員有: s3-(s1-s2)8, 10, 6ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作19字典字典字典字典是是pyth

17、on中唯一內(nèi)置映射中唯一內(nèi)置映射數(shù)據(jù)類型。數(shù)據(jù)類型。字典類型字典類型dict是無序的集合體。是無序的集合體。字典是一個(gè)由鍵和值組成的鍵值對(duì)構(gòu)成的集合,每一個(gè)字字典是一個(gè)由鍵和值組成的鍵值對(duì)構(gòu)成的集合,每一個(gè)字典元素分為兩部份典元素分為兩部份:鍵(鍵(key)值值(value)鍵不能重復(fù),只能使用不可變對(duì)象(鍵不能重復(fù),只能使用不可變對(duì)象(bool,int,float,complex,str,tuple,fronzenset等)。等)??梢钥梢酝ㄟ^指定的鍵從字典訪問值。通過指定的鍵從字典訪問值。例如,表示例如,表示星期時(shí),用星期時(shí),用1表示星期一(表示星期一(MON),),6表示星期六(表示星期

18、六(SAT),),0表示星期日(表示星期日(SUN)。ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作20字典字典字典字面值字典字面值由由一對(duì)花括號(hào)括起的,以逗號(hào)分隔的鍵值對(duì)構(gòu)成,鍵值對(duì)一對(duì)花括號(hào)括起的,以逗號(hào)分隔的鍵值對(duì)構(gòu)成,鍵值對(duì)的書寫形式的書寫形式為為 : 舉例舉例 d1=1:MON,2:TUE,3:WED,4:THU,5:FRI,6:SAT,0:SUN d10: SUN, 1: MON, 2: TUE, 3: WED, 4: THU, 5: FRI, 6: SAT test=test:mytest:10 testtest: mytest: 10ZhangHua WHU批量數(shù)

19、據(jù)類型與操作批量數(shù)據(jù)類型與操作21字典字典用類型構(gòu)造器創(chuàng)建字典用類型構(gòu)造器創(chuàng)建字典參數(shù)參數(shù)為鍵值對(duì),鍵值對(duì)之間為鍵值對(duì),鍵值對(duì)之間以逗號(hào)分割以逗號(hào)分割,鍵值對(duì)的書寫形,鍵值對(duì)的書寫形式式為為 = 舉例舉例 monthdays = dict(Jan=31, Feb=28, Mar=31, Apr=30,May=31, Jun=30,Jul=31, Aug=31,Sep=30, Oct=31,Nov=30, Dec=31 )ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作22字典字典用類型構(gòu)造器創(chuàng)建字典用類型構(gòu)造器創(chuàng)建字典類型構(gòu)造器對(duì)鍵值對(duì)的要求比字面值的鍵值對(duì)的要求更嚴(yán)類型構(gòu)造器對(duì)鍵

20、值對(duì)的要求比字面值的鍵值對(duì)的要求更嚴(yán)格,鍵名格,鍵名key必須是一個(gè)標(biāo)識(shí)符,而不能是表達(dá)式必須是一個(gè)標(biāo)識(shí)符,而不能是表達(dá)式。舉例舉例 weekday=dict(1=MON,2=TUE,3=WED,4=THU, 5=FRI,6=SAT,0=SUN)SyntaxError: keyword cant be an expression weekday=dict(a1 =MON, a2=TUE, a3=WED, a4=THU,a5=FRI,a6=SAT,a0=SUN) weekdaya3: WED, a2: TUE, a1: MON, a0: SUN, a6: SAT, a5: FRI, a4: TH

21、UZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作23字典字典訪問字典元素訪問字典元素字典元素的訪問方式是通過鍵訪問相關(guān)聯(lián)的值,訪問形式字典元素的訪問方式是通過鍵訪問相關(guān)聯(lián)的值,訪問形式為為舉例舉例 d12TUE monthdaysJan31 monthdaysJauTraceback (most recent call last): File , line 1, in KeyError: JauZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作24字典字典字典字典的基本操作的基本操作修改元素修改元素monthdaysJan=30,可把可把Jan的值由的值由31改為改為3

22、0。添加元素添加元素monthdays“test”=30,如果不存在鍵,如果不存在鍵“test”,則添加,則添加一個(gè)新鍵值一個(gè)新鍵值對(duì)。對(duì)。刪除元素刪除元素del monthdays“test”,刪除,刪除字典條目。字典條目。ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作25字典字典字典字典的基本操作的基本操作通過內(nèi)置函數(shù)通過內(nèi)置函數(shù)len(),可以獲取字典的長度(元素個(gè)數(shù)),可以獲取字典的長度(元素個(gè)數(shù))字典對(duì)象也支持比較運(yùn)算符(字典對(duì)象也支持比較運(yùn)算符(、=、),),但只有但只有=、!=有有意義。意義。ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作26字典字典字

23、典對(duì)象的方法字典對(duì)象的方法方法方法描述描述d.keys()返回字典d中所有鍵的列表,類型為dict_keys。d.values()返回字典d中值的列表,類型為dict_values。d.items()返回字典d中由鍵和相應(yīng)值組成的元組的列表,類型為dict_items。d.clear()刪除字典d的所有條目。d.copy()返回字典d的淺復(fù)制拷貝,不復(fù)制嵌入結(jié)構(gòu)。d.update(x)將字典x中的鍵值加入到字典d。d.pop(k)刪除鍵值為k的鍵值對(duì),返回k所對(duì)應(yīng)的值。d.get(k,y)返回鍵k對(duì)應(yīng)的值,若未找到該鍵返回none,若提供y,則未找到k時(shí)返回y。 ZhangHua WHU批量數(shù)

24、據(jù)類型與操作批量數(shù)據(jù)類型與操作27字典字典字典對(duì)象的方法應(yīng)用舉例字典對(duì)象的方法應(yīng)用舉例 monthdays.keys() #顯示字典顯示字典monthdays的鍵值序列的鍵值序列dict_keys(Apr, Dec, May, Feb, Aug, Oct, Jan, Jun, Jul, Mar, Sep, Nov) monthdays.values() #顯示字典顯示字典monthdays的值序列的值序列dict_values(30, 31, 31, 28, 31, 31, 30, 30, 31, 31, 30, 30)#dict_keys和和dict_values也是一個(gè)迭代器對(duì)象也是一個(gè)迭

25、代器對(duì)象,#可以可以通過迭代方式訪問其中的元素,例如:通過迭代方式訪問其中的元素,例如: for i in monthdays.keys():print(i,end= )Apr Dec May Feb Aug Oct Jan Jun Jul Mar Sep Nov monthdays.items() #顯示字典顯示字典monthdays的鍵值對(duì)序列的鍵值對(duì)序列dict_items(Apr, 30), (Jul, 31), (Jun, 30), (Oct, 31), (Mar, 31), (Jan, 30), (May, 31), (Nov, 30), (Dec, 31), (Aug, 31),

26、 (Sep, 30), (Feb, 28)ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作28字典字典字典對(duì)象的方法應(yīng)用舉例字典對(duì)象的方法應(yīng)用舉例 x=a1:21,a2:34 #創(chuàng)建一個(gè)新的字典創(chuàng)建一個(gè)新的字典x xa2: 34, a1: 21 monthdays.update(x) #將字典將字典x的鍵值對(duì)追加到字典的鍵值對(duì)追加到字典monthdays中中 monthdaysApr: 30, Jul: 31, Jun: 30, Oct: 31, Mar: 31, Jan: 30, May: 31, Nov: 30, Dec: 31, a2: 34, a1: 21, Aug: 31

27、, Sep: 30, Feb: 28 monthdays.pop(a1) #刪除鍵為刪除鍵為a1的鍵值對(duì)的鍵值對(duì)21 monthdaysApr: 30, Jul: 31, Jun: 30, Oct: 31, Mar: 31, Jan: 30, May: 31, Nov: 30, Dec: 31, a2: 34, Aug: 31, Sep: 30, Feb: 28 monthdays.get(a2) #獲取鍵獲取鍵a2對(duì)應(yīng)的值對(duì)應(yīng)的值34 monthdays.get(a1,not found) #沒有找到?jīng)]有找到a1則則返回返回not foundnot foundZhangHua WHU批量數(shù)據(jù)

28、類型與操作批量數(shù)據(jù)類型與操作29字典字典應(yīng)用應(yīng)用字典應(yīng)用舉例字典應(yīng)用舉例已有已有5位同學(xué)的姓名和成績,按成績從高到低列出同學(xué)姓名位同學(xué)的姓名和成績,按成績從高到低列出同學(xué)姓名,假設(shè)成績沒有重復(fù)值。,假設(shè)成績沒有重復(fù)值。方法方法一一按按建立字典,從字典獲取由成績組成的建立字典,從字典獲取由成績組成的列表,列表,從從高到低排序后,根據(jù)列表中的成績,逐個(gè)從字典中查找對(duì)應(yīng)的姓高到低排序后,根據(jù)列表中的成績,逐個(gè)從字典中查找對(duì)應(yīng)的姓名,寫出另一個(gè)列表名,寫出另一個(gè)列表。得到得到的新列表中的姓名就是按成績排序的。的新列表中的姓名就是按成績排序的。ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作

29、30字典字典應(yīng)用應(yīng)用字典應(yīng)用舉例字典應(yīng)用舉例 scores=85:李鳴李鳴,74:黃輝黃輝,92:張檬張檬,88:于靜頌于靜頌,63:錢多多錢多多 scores88: 于靜頌于靜頌, 74: 黃輝黃輝, 92: 張檬張檬, 85: 李鳴李鳴, 63: 錢多多錢多多 L1=list(scores.keys() L188, 74, 92, 85, 63 L1.sort(reverse=True) L192, 88, 85, 74, 63 L2= for i in range(0,len(L1): L2.append(scoresL1i) L2張檬張檬, 于靜頌于靜頌, 李鳴李鳴, 黃輝黃輝, 錢多

30、多錢多多ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作31字典字典應(yīng)用應(yīng)用字典應(yīng)用舉例字典應(yīng)用舉例思考:如果有相同成績,怎么操作呢思考:如果有相同成績,怎么操作呢? scores=李鳴李鳴:85,黃輝黃輝:74,張檬張檬:92,于靜頌于靜頌:88,錢多多錢多多:74 s1=(v,k) for k,v in scores.items() s1.sort(reverse=True) L1=s1i1 for i in range(len(s1) L1張檬張檬, 于靜頌于靜頌, 李鳴李鳴, 黃輝黃輝, 錢多多錢多多ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作32字典應(yīng)用字

31、典應(yīng)用舉例舉例問題問題假設(shè)已有若干用戶名字及其喜歡的電影清單,現(xiàn)有某用戶假設(shè)已有若干用戶名字及其喜歡的電影清單,現(xiàn)有某用戶,已看過并喜歡一些電影,現(xiàn)在想找個(gè)新電影看看,又不,已看過并喜歡一些電影,現(xiàn)在想找個(gè)新電影看看,又不知道看什么好。知道看什么好。設(shè)計(jì)思路設(shè)計(jì)思路根據(jù)根據(jù)已有數(shù)據(jù),查找與該用戶愛好最相似的用戶,也就是已有數(shù)據(jù),查找與該用戶愛好最相似的用戶,也就是看過并喜歡的電影與該用戶最接近,然后從那個(gè)用戶喜歡看過并喜歡的電影與該用戶最接近,然后從那個(gè)用戶喜歡的電影中選取一個(gè)當(dāng)前用戶還沒看過的電影,進(jìn)行推薦。的電影中選取一個(gè)當(dāng)前用戶還沒看過的電影,進(jìn)行推薦。ZhangHua WHU批量數(shù)據(jù)類

32、型與操作批量數(shù)據(jù)類型與操作33字典應(yīng)用字典應(yīng)用舉例舉例實(shí)現(xiàn)實(shí)現(xiàn)from random import randrange# 其他用戶喜歡看的電影清單其他用戶喜歡看的電影清單data = user+str(i):film+str(randrange(1, 10) for j in range(randrange(15) for i in range(10)# 待測(cè)用戶曾經(jīng)看過并感覺不錯(cuò)的電影待測(cè)用戶曾經(jīng)看過并感覺不錯(cuò)的電影user = film1, film2, film3# 查找與待測(cè)用戶最相似的用戶和查找與待測(cè)用戶最相似的用戶和Ta喜歡看的電影喜歡看的電影similarUser, films

33、= max(data.items(), key=lambda item: len(item1&user)print(歷史數(shù)據(jù):歷史數(shù)據(jù):)for u, f in data.items(): print(u, f, sep=:)print(和您最相似的用戶是:和您最相似的用戶是:, similarUser)print(Ta最喜歡看的電影是:最喜歡看的電影是:, films)print(Ta看過的電影中您還沒看過的有:看過的電影中您還沒看過的有:, films-user)ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作lamda表達(dá)式表達(dá)式lambda arg1,arg2,:用

34、來用來聲明匿名函數(shù),也就是沒有函數(shù)名字的臨時(shí)使用的小聲明匿名函數(shù),也就是沒有函數(shù)名字的臨時(shí)使用的小函數(shù),尤其適合需要一個(gè)函數(shù)作為另一個(gè)函數(shù)參數(shù)的場(chǎng)合函數(shù),尤其適合需要一個(gè)函數(shù)作為另一個(gè)函數(shù)參數(shù)的場(chǎng)合。lambda表達(dá)式只可以包含一個(gè)表達(dá)式,該表達(dá)式的計(jì)算結(jié)表達(dá)式只可以包含一個(gè)表達(dá)式,該表達(dá)式的計(jì)算結(jié)果可以看作是函數(shù)的返回值,不允許包含復(fù)合語句,但在果可以看作是函數(shù)的返回值,不允許包含復(fù)合語句,但在表達(dá)式中可以調(diào)用其他函數(shù)。表達(dá)式中可以調(diào)用其他函數(shù)。34lambda表達(dá)式表達(dá)式 sf = lambda x,y : x+y type(sf) sf(12, 34)46 for v in filter

35、(lambda x:x0, 1,-2,3,-4,5):. print(v, end= ).1 3 5ZhangHua WHU批量數(shù)據(jù)類型與操作批量數(shù)據(jù)類型與操作35標(biāo)準(zhǔn)庫標(biāo)準(zhǔn)庫collections中與字典有關(guān)的類中與字典有關(guān)的類OrderedDict類類Python內(nèi)置字典內(nèi)置字典dict是無序的,如果需要一個(gè)可以記住元是無序的,如果需要一個(gè)可以記住元素插入順序的字典,可以使用素插入順序的字典,可以使用collections.OrderedDict。舉例舉例 import collections x = collections.OrderedDict() #有序字典有序字典 xa = 3 xb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論