




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章
組合數(shù)據(jù)類型掌握熟悉掌握熟悉
學(xué)習(xí)目標(biāo)掌握列表的創(chuàng)建、索引、切片12掌握列表的操作符、操作函數(shù)和操作方法熟悉元組34熟悉字典的創(chuàng)建、操作符、操作函數(shù)和操作方法目錄頁5.1基本概念5.2列表5.3集合5.4字典5.5元組目錄頁5.1基本概念5.2列表5.3集合5.4字典5.5元組5.1組合數(shù)據(jù)類型基本概念Python的組合數(shù)據(jù)類型可分成三類:序列類型、集合類型和映射類型在序列類型中,又可以分為列表和元組,字符串也屬于序列類型在集合類型中,主要是集合,集合是一種無序的“序列”在映射類型中,主要有字典類型,字典也是一種無序的“序列”5.1組合數(shù)據(jù)類型基本概念序列包括字符串類型(str)、列表類型(list)和元組類型(tuple)。組合數(shù)據(jù)類型按照其中元素之間是否存在先后的位置關(guān)系分為:有序數(shù)據(jù)類型和無序數(shù)據(jù)類型有序類型包括字符串、列表和元組無序類型包括集合和字典有序類型可以支持索引(下標(biāo))訪問和切片訪問,無序類型不支持下標(biāo)訪問和切片訪問5.1組合數(shù)據(jù)類型基本概念可變類型包括序列、集合和字典不可變類型包括字符串和元組基本數(shù)據(jù)類型中數(shù)值類型也是不可變類型??勺冾愋椭С智衅ppend()、下標(biāo)引用賦值等元素賦值操作不可變類型不支持元素賦值。5.1組合數(shù)據(jù)類型基本概念表5-1序列通用操作操作符描
述x
in
s如果x是s的元素,返回True,否則返回Falsex
not
in
s如果x不是s的元素,返回True,否則返回Falses+t連接s和tx*n將序列s復(fù)制n次s[i]索引,返回序列的第i個(gè)元素s[i:j]切片,返回包含序列s的第i到j(luò)個(gè)元素的子序列(不包含第j個(gè)元素)s[i:j:k]步長(zhǎng)切片,返回包含序列s的第i到j(luò)個(gè)元素的以k為步長(zhǎng)的子序列l(wèi)en(s)序列s的元素個(gè)數(shù)min(s)序列s的最小元素max(x)序列s的最大元素s.index(x,i,j)序列s中從i開始到j(luò)位置中第一次出現(xiàn)元素x的位置s.count(x)序列s中出現(xiàn)x的總次數(shù)
5.1組合數(shù)據(jù)類型基本概念Python組合數(shù)據(jù)類型分類數(shù)據(jù)類型名稱序列類型字符串(str),是不可變序列列表(list),是可變序列,是任何對(duì)象的容器元組(tuple),是不可變序列集合類型集合(set)映射類型字典(dict)目錄頁5.1基本概念5.2列表5.3集合5.4字典5.5元組列表(list)是包含0個(gè)或多個(gè)對(duì)象的有序序列5.2列表列表中的值稱為元素(element),也稱為項(xiàng)(item)列表的長(zhǎng)度和內(nèi)容是可變的,元素類型可以不同列表用一對(duì)方括號(hào)[]表示,所有元素包含在一對(duì)方括號(hào)中,每個(gè)元素使用逗號(hào)分隔列表可以沒有元素,即[]表示長(zhǎng)度為0(也就是元素個(gè)數(shù)為0)的空列表要查看列表的方法,可以執(zhí)行dir(list)以雙下劃線開頭和結(jié)尾的方法,一般不直接使用執(zhí)行以下命令查看append方法help(list.append)5.2列表例如,下面這些都是列表:[] #長(zhǎng)度為0(元素個(gè)數(shù)為0)的空列表[20,30,40] #元素都是數(shù)值類型["liping",456]#元素是字符串和數(shù)值類型[101,(20,"male"),"sichuan",[60,70,80]] #元素中包括數(shù)值類型、字符串和元組和列表類型列表屬于可變的序列類型,長(zhǎng)度和內(nèi)容都可變列表的創(chuàng)建列表的創(chuàng)建和初始化可通過[]和list()函數(shù)完成。其格式:列表變量=[數(shù)據(jù)1,數(shù)據(jù)2,…]列表變量=list(變量名或?qū)ο髷?shù)據(jù))在[]列舉數(shù)據(jù)元素的方式創(chuàng)建并初始化一個(gè)列表變量lst1=[]和lst1=list()創(chuàng)建空列表list()函數(shù)可以利用字符串、元組、列表、集合、字典、range對(duì)象、其他類型的迭代對(duì)象數(shù)據(jù)創(chuàng)建并初始化另一個(gè)列表變量列表的創(chuàng)建>>>a=[]#創(chuàng)建空列表>>>a[]>>>type(a)<class'list'>>>>b=list()#創(chuàng)建空列表>>>b[]>>>type(b)<class'list'>>>>c=[12,1.3,(101,"liping"),[60,70,80]]>>>type(c)<class'list'>>>>d=list("abcdefg")#將字符串轉(zhuǎn)換為列表,list()可以將迭代對(duì)象轉(zhuǎn)換為列表。>>>d['a','b','c','d','e','f','g']>>>f=list(range(10))#將range對(duì)象轉(zhuǎn)換為列表>>>f[0,1,2,3,4,5,6,7,8,9]>>>list("abcdef")#將字符串轉(zhuǎn)換為列表['a','b','c','d','e','f']5.2列表5.2.2列表的索引和切片列表list1=[20,30.5,”dog”,(1,1),[1,2,3,4]]元素索引編號(hào)示意圖列表的下標(biāo)從0開始,因此,在引用索引的時(shí)候,不要超過范圍,否則會(huì)出現(xiàn)“IndexError:listindexoutofrange”錯(cuò)誤信息。列表切片(slicing)是Python中一個(gè)非常有用的操作,通過切片可以獲取列表中的一個(gè)子序列(即子列表)5.2.2列表的索引和切片列表切片的完整格式如下:my_list[start:stop:step]my_list是要進(jìn)行切片的列表,而start、stop和step是可選的參數(shù),它們分別表示切片的起始下標(biāo)、結(jié)束下標(biāo)和步長(zhǎng)。
start:切片的起始下標(biāo)(包含)。如果省略,則默認(rèn)為0,即列表的開始。
stop:切片的結(jié)束下標(biāo)(不包含)。如果省略,則默認(rèn)為列表的長(zhǎng)度,即列表的結(jié)束。
step:切片的步長(zhǎng)。如果省略,則默認(rèn)為1。步長(zhǎng)可以是負(fù)數(shù),表示從后往前切片。5.2.2列表的索引和切片5.2.2列表的索引和切片圖5-2
列表的切片列表切片的步驟如下:首先,將編程人員給出的負(fù)數(shù)的start和stop轉(zhuǎn)換成正數(shù),轉(zhuǎn)換方式是列表長(zhǎng)度+start或stop,如-1轉(zhuǎn)換成列表長(zhǎng)度-1,-2轉(zhuǎn)換成列表長(zhǎng)度-2。接著為缺省的參數(shù)設(shè)為默認(rèn)值,step默認(rèn)為1,當(dāng)step>0時(shí),start默認(rèn)值為0,stop默認(rèn)值為列表長(zhǎng)度;當(dāng)step<0時(shí),切片方向?yàn)閺挠蚁蜃螅鹗枷聵?biāo)為最右端的元素,也就是start的默認(rèn)值為列表長(zhǎng)度-1,stop下標(biāo)的默認(rèn)值為-1,注意,這個(gè)-1不會(huì)被解釋器轉(zhuǎn)換為正數(shù),因?yàn)檫@個(gè)負(fù)數(shù)不是編程人員給的。5.2.2列表的索引和切片my_list=[0,1,2,3,4,5,6,7,8,9]print(my_list[1:4])#輸出:[1,2,3]從下標(biāo)1開始直到下標(biāo)4(不包含4)print(my_list[2:])#輸出:[2,3,4,5,6,7,8,9]從下標(biāo)2開始直到下標(biāo)10(默認(rèn))print(my_list[:5])#輸出:[0,1,2,3,4]從下標(biāo)0開始直到下標(biāo)5(不包含5)
print(my_list[::-1])#輸出:[9,8,7,6,5,4,3,2,1,0](反轉(zhuǎn)列表)print(my_list[1:10:2])#輸出:[1,3,5,7,9](步長(zhǎng)為2)print(my_list[::-2])#輸出:[9,7,5,3,1](從后往前,步長(zhǎng)為-2)5.2.2列表的索引和切片元組和字符串都可以索引和切片,方法同列表一樣>>>nums=[1,2,3,4,5,6,7,8,9]>>>nums[:]#相當(dāng)于nums[0:9:1][1,2,3,4,5,6,7,8,9]>>>nums[0:4]#相當(dāng)于nums[0:4:1][1,2,3,4]>>>nums[3:]#相當(dāng)于nums[3:9:1][4,5,6,7,8,9]>>>nums[:7]#相當(dāng)于nums[0:7:1][1,2,3,4,5,6,7]>>>nums[::2]#相當(dāng)于nums[0:9:2][1,3,5,7,9]>>>nums[0:8:3][1,4,7]5.2.2列表的索引和切片#結(jié)合反向索引的切片>>>nums[::-1]#相當(dāng)于nums[8:-1:-1]注意這里的stop為-1不用去轉(zhuǎn)換為正[9,8,7,6,5,4,3,2,1]>>>nums[:-2]#相當(dāng)于nums[0:7:1]注意這里的stop為給出的-2,轉(zhuǎn)換為列表長(zhǎng)度9-2[1,2,3,4,5,6,7]>>>nums[1:-2]#相當(dāng)于nums[1:7:1]stop同上。[2,3,4,5,6,7]>>>nums[-5:]#相當(dāng)于nums[4:9:1]start是編程人員給出的-5,轉(zhuǎn)換為正9-5=4[5,6,7,8,9]>>>nums[-3:-2]#nums[6:7:1][7]>>>nums[-3::-2]#step<0,start編程人員給的-3,轉(zhuǎn)換為9-3=6,默認(rèn)stop=-1[7,5,3,1]>>>nums[-3:0:-2]#step<0,start編程人員給的-3,轉(zhuǎn)換為9-3=6,stop=0[7,5,3]>>>nums[-3:-1:-2]#相當(dāng)于nums[6:8:-2][]5.2.2列表的索引和切片5.2.3列表的操作符、操作函數(shù)和方法表5-3
列表基本操作符操作符描
述xins檢查元素x是否在列表中,返回True或者Falsexnotins檢查元素x是否不在列表中,返回True或者Falses+t連接兩個(gè)列表s和ts*n將列表s復(fù)制n次s[i]索引列表s的第i個(gè)元素s[i:j:k]列表切片,返回列表s中第i到j(luò)以k為步長(zhǎng)的元素s[i]=x替換列表s第i個(gè)元素為x5.2列表表5-4
列表基本操作函數(shù)操作函數(shù)描
述list(s)將某個(gè)序列轉(zhuǎn)換為列表len(s)返回列表s的長(zhǎng)度id(s)獲取列表對(duì)象s的內(nèi)存地址min(s)返回列表s的最小元素,元素需要可比較max(s)返回列表s的最大元素,元素需要可比較dels[i]刪除列表s中第i個(gè)元素dels[i:j:k]刪除列表s中從i到j(luò)位置以k步進(jìn)切片的元素s.index(x)返回列表s第一次出現(xiàn)x的位置s.index(x,i,j)返回列表s從i到j(luò)位置中第一次出現(xiàn)x的位置s.count(x)返回列表s中出現(xiàn)x的總次數(shù)5.2列表表5-5
列表基本內(nèi)置方法方法描
述s.append(x)在列表s最后增加元素xs.extend(a)將列表a擴(kuò)展到列表s中s.insert(i,x)在列表s的第i個(gè)位置增加元素xs.clear()刪除列表s中所有元素,s變?yōu)榭樟斜韘.pop(i)將列表s中第i位置元素取出并刪除該元素,缺省下取最后一個(gè)元素s.remove(x)將列表s中出現(xiàn)的第一個(gè)x刪除s.copy()生成一個(gè)新列表,復(fù)制s中的所有元素s.reserve()列表s中的元素反轉(zhuǎn)list.sort(key=None,reverse=False)
對(duì)關(guān)鍵字key進(jìn)行升序或者降序排序,reverse
=
True為降序,reverse
=
False
為升序(默認(rèn))>>>s=[]>>>s.append(1)>>>s[1]>>>a=[2,3,4,5]>>>s.extend(a)>>>s[1,2,3,4,5]>>>s.clear()>>>s[]>>>s=a>>>s[2,3,4,5]>>>s.insert(1,1)>>>s[2,1,3,4,5]>>>b=s.pop()>>>b5>>>s[2,1,3,4]>>>s.insert(0,1)>>>s[1,2,1,3,4]>>>s.remove(1)>>>s[2,1,3,4]>>>s.remove(1)>>>s[2,3,4]>>>s.reverse()>>>s[4,3,2]>>>c=reversed(s)>>>c<list_reverseiteratorobjectat0x041A00F0>>>>s[4,3,2]>>>list(c)[2,3,4]>>>>>>s=[1,2,3,4,5]>>>dels[1:4:2]>>>s[1,3,5]【例5-1】有一個(gè)列表a,編寫程序刪除列表中的素?cái)?shù),下列代碼是有問題的代碼。a=[3,5,20,8,61,9,11]forxina:#此處代碼有bug,要正確運(yùn)行程序,需要修改forxina.copy():flag=Trueifx>1:foriinrange(2,x):if(x%i)==0:flag=Falsebreakif(flag==True):a.remove(x)print(a)程序運(yùn)行結(jié)果:[5,20,8,9]>>>[5,20,8,9]>>>從程序的運(yùn)行結(jié)果可以看到,列表中的素?cái)?shù)5并沒有被刪掉,程序問題出在哪里呢?原因是當(dāng)3刪掉后,5直接移到前面第0個(gè)位置,此時(shí)x指向第一個(gè)位置元素,即20,因此,這時(shí)判斷20是否為素?cái)?shù),而不會(huì)判斷5是否是素?cái)?shù)。要讓例題中代碼正常運(yùn)行,可以把forxina:改為forxina.copy():,此時(shí)運(yùn)行結(jié)果正常。
for變量in列表:語句例如,使用循環(huán)遍歷把社會(huì)主義核心價(jià)值觀一個(gè)一個(gè)打印出來。>>>values=['富強(qiáng)','民主','文明','和諧','自由','平等','公正','法治','愛國','敬業(yè)','誠信','友善']>>>forxinvalues: print(x,end="")運(yùn)行結(jié)果:富強(qiáng)
民主
文明
和諧
自由
平等
公正
法治
愛國
敬業(yè)
誠信
友善
>>>enumerate(列表)是枚舉列表元素,返回枚舉對(duì)象,其中每個(gè)元素為包含下標(biāo)和值的元組>>>color=["紅","橙","黃","綠"]>>>list(enumerate(color))[(0,'紅'),(1,'橙'),(2,'黃'),(3,'綠')]列表的遍歷是指一次性、不重復(fù)地訪問列表的所有元素【例5-2】從鍵盤輸入一個(gè)列表,統(tǒng)計(jì)各個(gè)元素在列表中的出現(xiàn)次數(shù)。a=eval(input())s=[]forxina:ifxnotins:s.append(x)forxins:n=a.count(x)print(x,"出現(xiàn)的次數(shù)為:",n)程序運(yùn)行結(jié)果:[1,2,3,1,2,3,4,2,3,4,2,1,2]1出現(xiàn)的次數(shù)為:32出現(xiàn)的次數(shù)為:53出現(xiàn)的次數(shù)為:34出現(xiàn)的次數(shù)為:2>>>【例5-3】a和b是兩個(gè)列表變量,列表a為[3,6,9]已給定,鍵盤輸入列表b,計(jì)算a中元素與b中對(duì)應(yīng)元素乘積的累加和。例如:鍵盤輸入列表b為[1,2,3],累加和為1*3+2*6+3*9=42,因此,屏幕輸出計(jì)算結(jié)果為42。a=[3,6,9]b=eval(input(""))#輸入[1,2,3]s=0foriinrange(len(a)):s+=a[i]*b[i];print(s)程序運(yùn)行結(jié)果:[1,2,3]42【例5-4】編寫一個(gè)小小的通信錄程序。要求如下:(1) 使用列表存儲(chǔ)聯(lián)系人。(2) 能根據(jù)用戶輸入添加聯(lián)系人。(3) 能根據(jù)輸入的人名刪除聯(lián)系人。(4) 能顯示所有聯(lián)系人。
persons=[]#聯(lián)系人列表s='''*************************************1.添加聯(lián)系人2.刪除聯(lián)系人3.顯示所有聯(lián)系人4.退出**************************************'''defmenu():print(s)whileTrue:menu()n=eval(input("請(qǐng)輸入數(shù)字選項(xiàng)(1-4):"))ifn==4:breakelifn==1:p=input("請(qǐng)輸入聯(lián)系人:")persons.append(p)elifn==2:p=input("請(qǐng)輸入要?jiǎng)h除的聯(lián)系人:")ifpinpersons:persons.remove(p)else:print("沒有聯(lián)系人:",p)elifn==3:print(persons)else:print("選項(xiàng)有誤,請(qǐng)重新輸入")目錄頁5.1基本概念5.2列表5.3集合5.4字典5.5元組集合是多個(gè)元素的無序組合,每個(gè)元素唯一,不存在相同元素集合是無序的集合中不允許有相同的數(shù)據(jù)項(xiàng)可以使用大括號(hào){}或者set()函數(shù)創(chuàng)建集合,用set()創(chuàng)建集合,也可以把字符串、列表或元組轉(zhuǎn)換為集合注意:創(chuàng)建一個(gè)空集合必須用set()而不是{},因?yàn)閧}是用來創(chuàng)建一個(gè)空字典。5.3集合集合是多個(gè)元素的無序組合,每個(gè)元素唯一,不存在相同元素集合是無序的集合中不允許有相同的數(shù)據(jù)項(xiàng)可以使用大括號(hào){}或者set()函數(shù)創(chuàng)建集合,用set()創(chuàng)建集合,也可以把字符串、列表或元組轉(zhuǎn)換為集合注意:創(chuàng)建一個(gè)空集合必須用set()而不是{},因?yàn)閧}是用來創(chuàng)建一個(gè)空字典。5.3集合如果創(chuàng)建的時(shí)候有重復(fù)元素,集合會(huì)自動(dòng)去重,例如:set1={1,2,4,3,3,4,4,3,3,2,2,2,2,1},得到的set1是{1,2,3,4}集合元素只能是整數(shù)、實(shí)數(shù)、字符串、元組和凍結(jié)集合,不能是可變的列表、可變集合和字典。集合在打印的時(shí)候,是無序的5.3集合5.3集合表5-6
集合基本操作符操作符描
述s|t返回一個(gè)新集合,包括在集合s和t中的所有元素s-t返回一個(gè)新集合,包括在集合s但不在t中的元素s&t返回一個(gè)新集合,包括同時(shí)在集合s和t中的元素s^t返回一個(gè)新集合,包括集合s和t中的非相同元素s<=tors<t返回True/False,判斷集合s和t的子集關(guān)系s<=tors<t返回True/False,判斷集合s和t的包含關(guān)系xins返回True/False,判斷元素x是否在集合s中xnotins返回True/False,判斷元素x是否不在集合s中5.3集合表5-7
集合基本操作函數(shù)操作函數(shù)描
述set(s)將某個(gè)序列轉(zhuǎn)換為集合len(s)返回集合s的長(zhǎng)度id(s)獲取集合對(duì)象s的內(nèi)存地址min(s)返回集合s的最小元素,元素需要可比較max(s)返回集合s的最大元素,元素需要可比較5.3集合表5-8
集合基本內(nèi)置方法方法描
述s.add(x)如果x不在集合s中,將x增加到集合ss.discard(x)移除集合s中元素x,如果x不在集合s中,不報(bào)錯(cuò)s.clear()刪除集合s中所有元素s.copy()生成集合s的一個(gè)拷貝s.pop()隨機(jī)返回集合s中的一個(gè)元素,更新s,若s為空產(chǎn)生KeyError異常s.remove(x)將集合s中的x刪除s.update(x)添加元素x,可以是列表,元組,字典等s.difference()返回多個(gè)集合的差集s.difference_update()移除集合中的元素,該元素在指定的集合也存在ersection()返回集合的交集s.inersection_update()返回集合的交集s.union()返回兩個(gè)集合的并集對(duì)于一個(gè)學(xué)生的期末成績(jī),數(shù)據(jù)庫原理:60,計(jì)算機(jī)操作系統(tǒng):80,大數(shù)據(jù)技術(shù):90,人工智能基礎(chǔ):70。可以用一組列表表示課程,再用另一組列表表示成績(jī)。但是這樣,就硬生生把一個(gè)學(xué)生的成績(jī)分成了兩部分,通過創(chuàng)建字典就可以解決上述問題。5.4字典創(chuàng)建字典dict1={'數(shù)據(jù)庫原理':60,'計(jì)算機(jī)操作系統(tǒng)':80,'大數(shù)據(jù)技術(shù)':90,”人工智能基礎(chǔ)”:70},課程為鍵(key),成績(jī)?yōu)橹担╲alue),每一鍵值對(duì)(key-valuepair)叫做項(xiàng)(item),該字典共3項(xiàng)(item)。5.4字典5.4字典在編程中,通過“鍵”查找“值”的過程稱為映射字典是Python中典型的映射類型數(shù)據(jù)結(jié)構(gòu)字典的每個(gè)鍵值對(duì)用冒號(hào)分割,每個(gè)鍵值對(duì)之間用逗號(hào)分割,整個(gè)字典包括在花括號(hào){}中,鍵是數(shù)據(jù)索引的擴(kuò)展,字典是鍵值對(duì)的集合,鍵值對(duì)之間無序。5.4字典字典形式如下:d={key1:value2,key2:value2,…<keyn>:<valuen>}鍵和值之間用冒號(hào):分隔,形如key:value。字典是通過大括號(hào)來表示{},鍵和值以冒號(hào)連接,不同鍵值對(duì)通過逗號(hào)連接。大括號(hào)也可以創(chuàng)建一個(gè)空的字典,可以通過中括號(hào)向其增加內(nèi)容。例如:dict1={},dict1[‘a(chǎn)’]=1,dict1[‘b’]=2得到的dict1為{‘a(chǎn)’:1,‘b’:2}。5.4字典也可以使用內(nèi)建函數(shù)dict()來創(chuàng)建字典,例如:dict2=dict()??梢灾苯邮褂面I值對(duì)創(chuàng)建一個(gè)新字典,例如:tinydict={'name':'runoob','likes':123,'url':''},創(chuàng)建好的字典鍵值對(duì)如圖5-4所示。5.4字典5.4字典列表不能作為字典的鍵,而元組、字符串等都可以作為字典的鍵。字典的值可以相同,值可以是任何數(shù)據(jù)類型。要判斷一個(gè)對(duì)象是否是可hash的,可以用hash函數(shù),例如:>>>hash("name")-314078753>>>hash([1,2,3])Traceback(mostrecentcalllast):File"<pyshell#13>",line1,in<module>hash([1,2,3])TypeError:unhashabletype:'list'>>>5.4字典下列代碼演示字典創(chuàng)建方法。>>>d1={}##創(chuàng)建一個(gè)空字典>>>d2={"數(shù)據(jù)結(jié)構(gòu)":80,"操作系統(tǒng)":90}#創(chuàng)建有鍵值對(duì)的字典>>>d3=dict(數(shù)據(jù)結(jié)構(gòu)=80,操作系統(tǒng)=90)>>>keys=[1,2,3,4]>>>values=['a','b','c','d']>>>d4=dict(zip(keys,values))#zip函數(shù)將兩個(gè)列表打包為字典>>>d4{1:'a',2:'b',3:'c',4:'d'}>>>d3{'數(shù)據(jù)結(jié)構(gòu)':80,'操作系統(tǒng)':90}>>>d2{'數(shù)據(jù)結(jié)構(gòu)':80,'操作系統(tǒng)':90}5.4字典>>>s1=[('操作系統(tǒng)',90),('數(shù)據(jù)庫原理',85)]>>>s1[('操作系統(tǒng)',90),('數(shù)據(jù)庫原理',85)]>>>s2=dict(s1)>>>s2{'數(shù)據(jù)庫原理':85,'操作系統(tǒng)':90}>>>s3=[['操作系統(tǒng)',90],['數(shù)據(jù)庫原理',85]]>>>s4=dict(s3)>>>s4{'數(shù)據(jù)庫原理':85,'操作系統(tǒng)':90}>>>5.4字典字典值的查找可以通過中括號(hào)訪問,以字典變量[鍵]的方式,以鍵作為下標(biāo)可以讀取字典元素,若鍵不存在則拋出異常。也可以用字典對(duì)象.get(<key>,<default>)方法查找值,如果key存在則返回相應(yīng)的值,否則返回默認(rèn)值,default可以省略,如果省略則默認(rèn)值為空。5.4.2字典元素的訪問與修改字典的訪問把相應(yīng)的鍵放入到方括號(hào)中,既可得到對(duì)應(yīng)的值向字典添加新內(nèi)容的方法是增加新的鍵/值對(duì),修改或刪除已有鍵/值對(duì)例如:tinydict['Age']=8,會(huì)修改鍵’Age’的值為8,tinydict['School']="大數(shù)據(jù)",則會(huì)增加一個(gè)鍵值對(duì)。使用“字典變量[鍵]”的形式可以查找字典中與“鍵”對(duì)應(yīng)的值;使用賦值運(yùn)算符可以動(dòng)態(tài)修改字典中的值。5.4字典可以利用內(nèi)建函數(shù)刪除一個(gè)鍵,例如:deltinydict['Name'],清空字典可以利用方法tinydict.clear(),刪除整個(gè)字典也可以使用deltinydict。字典值可以是任何的Python對(duì)象,既可以是標(biāo)準(zhǔn)的對(duì)象,也可以是用戶定義的創(chuàng)建一個(gè)字典d后,可以獲取字典信息,<d>.keys()方法獲取所有鍵信息,<d>.values() 獲取所有值信息,<d>.items() 獲取所有鍵值對(duì)信息。5.4字典>>>person={'A':'123','B':'135','C':'680'}>>>person.items()dict_items([('A','123'),('C','680'),('B','135')])>>>person.keys()dict_keys(['A','C','B'])>>>person.values()dict_values(['123','680','135'])>>>person['B']'135'>>>person['A']="888">>>person{'A':'888','B':'135','C':'680'}5.4字典>>>person['D']="9999"#通過操作鍵增加字典元素>>>person{'A':'888','D':'9999','B':'135','C':'680'}>>>5.4字典5.4.3字典的操作符、操作函數(shù)和方法表5-9
字典基本操作符操作符描
述xins返回True/False,判斷鍵x是否在字典s中xnotins返回True/False,判斷鍵x是否不在字典s中
5.4字典表5-10
字典基本操作函數(shù)操作函數(shù)描
述dict(s)將某個(gè)序列轉(zhuǎn)換為字典len(s)返回字典s的長(zhǎng)度id(s)獲取字典對(duì)象s的內(nèi)存地址str(s)輸出字典為可以打印的字串符5.4字典表5-12
字典基本內(nèi)置方法方法描
述s.clear()刪除字典s中所有元素s.copy()生成字典s的一個(gè)拷貝s.fromkeys(l,v)創(chuàng)建一個(gè)新字典,以序列l(wèi)中元素做字典的鍵,v為鍵對(duì)應(yīng)的值s.items()返回字典s中所有的鍵值對(duì)信息s.keys()返回字典s中所有的鍵信息s.values()返回字典s中所有的值信息s.get(k,<default>)鍵k存在,則返回相應(yīng)值,不存在則返回<default>值s.pop(k,<default>)鍵k存在,則取出相應(yīng)值,不存在則返回<default>值s.popitem()隨機(jī)從字典k中取出一個(gè)鍵值對(duì),以元組形式返回s.setdefault(k,<default>)和get類似,如果k不存在,將會(huì)添加鍵k并初始化為defaults.update(dict)把字典dict的鍵/值對(duì)更新到字典s里
5.4字典表5-10
字典基本操作函數(shù)操作函數(shù)描
述dict(s)將某個(gè)序列轉(zhuǎn)換為字典len(s)返回字典s的長(zhǎng)度id(s)獲取字典對(duì)象s的內(nèi)存地址str(s)輸出字典為可以打印的字串符5.4字典表5-10
字典基本操作函數(shù)操作函數(shù)描
述dict(s)將某個(gè)序列轉(zhuǎn)換為字典len(s)返回字典s的長(zhǎng)度id(s)獲取字典對(duì)象s的內(nèi)存地址str(s)輸出字典為可以打印的字串符5.4字典表5-10
字典基本操作函數(shù)操作函數(shù)描
述dict(s)將某個(gè)序列轉(zhuǎn)換為字典len(s)返回字典s的長(zhǎng)度id(s)獲取字典對(duì)象s的內(nèi)存地址str(s)輸出字典為可以打印的字串符5.4字典表5-10
字典基本操作函數(shù)操作函數(shù)描
述dict(s)將某個(gè)序列轉(zhuǎn)換為字典len(s)返回字典s的長(zhǎng)度id(s)獲取字典對(duì)象s的內(nèi)存地址str(s)輸出字典為可以打印的字串符#清除字典中所有的元素>>>dic1={"k1":11,"k2":22,"k3":"hello","k4":"world"}#創(chuàng)建字典>>>print(dic1){'k3':'hello','k4':'world','k2':22,'k1':11}>>>dic1.clear()>>>print(dic1){}
#淺復(fù)制>>>dic1={"k1":11,"k2":22,"k3":"hello","k4":"world"}>>>id(dic1)1403004550005845.4字典>>>person={'A':'123','B':'135','C':'680'}>>>person.items()dict_items([('A','123'),('C','680'),('B','135')])>>>person.keys()dict_keys(['A','C','B'])>>>person.values()dict_values(['123','680','135'])>>>person['B']'135'>>>person['A']="888">>>person{'A':'888','B':'135','C':'680'}5.4字典>>>dic2=dic1.copy()>>>id(dic2)140300455000648>>>print(dic2){'k2':22,'k4':'world','k3':'hello','k1':11}#返回一個(gè)以迭代器中的每一個(gè)元素做健,值為None的字典>>>dic1={"k1":11,"k2":"hello"}>>>dic1.fromkeys([22,33,44,55]){33:None,44:None,22:None,55:None}>>>print(dic1){'k2':'hello','k1':11}5.4字典#查詢某個(gè)元素是否在字典中,即使不存在也不會(huì)報(bào)錯(cuò)>>>dic1={'k3':None,'k2':'hello','k1':11,'k4':'world'}>>>dic1.get("k3")>>>value1=dic1.get("k1")>>>print(value1)11>>>value2=dic1.get("k2")>>>print(value2)hello5.4字典>>>value3=dic1.get("k5")>>>print(value3)None#返回一個(gè)由每個(gè)鍵及對(duì)應(yīng)的值構(gòu)成的元組組成的列表>>>dic1={"k1":11,"k2":22,"k3":"hello","k4":"world"}>>>dic1.items()dict_items([('k3','hello'),('k4','world'),('k2',22),('k1',11)])>>>type(dic1.items())<class'dict_items'>#返回一個(gè)由字典所有的鍵構(gòu)成的列表>>>dic1={"k1":11,"k2":22,"k3":"hello","k4":"world"}>>>dic1.keys()['k3','k2','k1','k4']5.4字典#從字典中移除指定的鍵,返回這個(gè)鍵對(duì)應(yīng)的值,如果鍵不存在則報(bào)錯(cuò)>>>dic1={"k1":11,"k2":22}>>>dic1.pop("k1")11>>>dic1.pop("k2")22#從字典中移除一個(gè)鍵值對(duì),并返回一個(gè)由所移除的鍵和值構(gòu)成的元組,字典為空時(shí),會(huì)報(bào)錯(cuò)>>>dic1={"k1":11,"k2":22}5.4字典>>>dic1.popitem()('k2',22)>>>dic1.popitem()('k1',11)>>>dic1.popitem()Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>KeyError:'popitem():dictionaryisempty'#參數(shù)只有一個(gè)時(shí),字典會(huì)增加一個(gè)鍵值對(duì),鍵為這個(gè)參數(shù),值默認(rèn)為None;后接兩個(gè)參數(shù)時(shí),第一個(gè)參數(shù)為字典新增的鍵,第二個(gè)參數(shù)為新增的鍵對(duì)應(yīng)的值>>>dic1={"k1":11,"k2":"hello"}>>>dic1.setdefault("k3")5.4字典>>>print(dic1){'k3':None,'k2':'hello','k1':11}>>>dic1.setdefault("k4","world")'world'>>>print(dic1){'k3':None,'k2':'hello','k1':11,'k4':'world'}#把一個(gè)字典參數(shù)合并入另一個(gè)字典,當(dāng)兩個(gè)字典的鍵有重復(fù)時(shí),參數(shù)字典的鍵值會(huì)覆蓋原始字典的鍵值>>>dic1={"k1":11,"k2":"hello"}>>>dic2={"k3":22,"k4":"world"}>>>dic1.update(dic2)>>>print(dic1){'k3':22,'k2':'hello','k1':11,'k4':'world'}5.4字典>>>dic1={"k1":11,"k2":"hello"}>>>dic2={"k1":22,"k4":"world"}>>>dic1.update(dic2)>>>print(dic1){'k2':'hello','k1':22,'k4':'world'}#返回一個(gè)由字典的所有的值構(gòu)成的列表>>>dic1={"k1":11,"k2":22,"k3":"hello","k4":"world"}>>>dic1.values()['hello',22,11,'world']5.4字典【例5-5】從鍵盤上輸入一串英文字符串,統(tǒng)計(jì)每個(gè)字母出現(xiàn)的次數(shù),并將出現(xiàn)次數(shù)最多的前三個(gè)字
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售行業(yè)保密協(xié)議標(biāo)準(zhǔn)合同
- 廈門市拆遷安置合同范本:公房、代建房、信退管理
- 可流通股代理繳款配股合同書
- 企業(yè)合同簽訂儀式暨包粽子比賽活動(dòng)方案
- 辦公室轉(zhuǎn)租合同標(biāo)準(zhǔn)文本
- 水資源開發(fā)利用合作合同
- 4 地球 我們的家園 (教學(xué)設(shè)計(jì))-統(tǒng)編版道德與法治六年級(jí)下冊(cè)
- 2023-2024學(xué)年天津市中小學(xué)生mixly創(chuàng)意編程 第4課 聰明的按鍵-教學(xué)設(shè)計(jì)
- Unit 1 Making friends Part A (Letters and sounds)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 農(nóng)村耕田合同范本
- 專升本專業(yè)人才培養(yǎng)方案-通信工程
- 第25課これは明日會(huì)議で使う資料です課件(14張)
- 如何在本機(jī)上架設(shè)服務(wù)器
- 一年級(jí)寫字下學(xué)期課件(PPT 38頁)
- 《實(shí)用日本語應(yīng)用文寫作》全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件
- 怎樣處理課堂突發(fā)事件
- 采礦學(xué)課程設(shè)計(jì)-隆德煤礦1.8Mta新井開拓設(shè)計(jì)
- 中藥藥劑學(xué)講義(英語).doc
- 【課件】Unit1ReadingforWriting課件高中英語人教版(2019)必修第二冊(cè)
- Q∕GDW 10799.6-2018 國家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 滴灌工程設(shè)計(jì)示例
評(píng)論
0/150
提交評(píng)論