標籤:python 字典
字典是Python的一種資料結構,像數學中的映射集合,可以理解為由鍵和值成對存在的單元構成的一個列表。
一.字典構造形式:
1.字典名 = {鍵名1:值1 ,鍵名2:值2 ,鍵名3:值3}
例如 :Dic = {‘op‘:55 , 3:(‘a‘,‘b‘) , ‘q‘:[1.25,‘score‘,5]}
其中鍵只能是不可改變對象(如元組,字串,整數等)和值可以為任意的對象
2.可以使用dict()或{}構造一個空的字典如 Dic=dict() DIc={}
二.字典的索引:
1.字典可以使用 [ ] 運算子,但與之前的列表元組等不同,字典不可以使用順序的數字作為索引如 1,2,-1等
2.字典需要使用索引值作為索引,如1.的例子中,可以使用如下的索引方法 Dic[‘op‘] Dic[3] Dic[‘q‘]
3.既然字典的值可以是任意對象,那麼就有可能為列表,元組,甚至是字典。那麼當值為上述對象時候,使用字典名[索引值]方式將得到一個集合,由此我們可以使用一個二維的方法進行索引
範例:
>>> Dic={‘a‘:{‘q‘:‘hello‘ , ‘w‘:‘how‘ , ‘e‘:‘Thanks‘}}>>> Dic[‘a‘][‘e‘]‘Thanks‘
一維結果為列表的話,二維的[]變可以使用順序的數字索引
以此類推,當二維鍵所對應的值仍為字典等集合時,可以繼續這樣使用:
>>> Dic={‘a‘:{‘q‘:‘hello‘ , ‘w‘:‘how‘ , ‘e‘:{‘u‘:‘yes‘}}}>>> Dic[‘a‘][‘e‘][‘u‘]‘yes‘
4.如果在索引時,輸入的索引值不存在,Python將報錯
三.字典的賦值:
賦值方法為 字典名[鍵名] = 值 以此形成一個映射關係
當待賦值的鍵名不存在時,python將直接在該字典中加入此索引值對
四.與字典有關的操作:
[]:在方括弧中使用鍵進行索引
len():計算出的長度為字典中索引值對的個數
in:成員測試,判斷鍵是否在該字典中
for:迴圈找出字典中每個索引值對
五.字典方法:
items() : 產生所有索引值對的元組列表
keys() : 產生所有鍵的列表
values(): 產生所有值的列表
copy() : 對字典進行淺拷貝 (參考關聯性)
六.一個執行個體
以《葛底斯堡演說》為例進行分析,判斷其中的單詞數和對應的頻率,並進行排序顯示
import stringdef addword (word,Wdict): #將word單詞加入字典統計,沒有添加索引值對,有則值+1 if(word in Wdict): Wdict[word]+=1 else: Wdict[word]=1def collect(line,Wdict): #對line字串進行分析,並拆分出有效單詞加入到字典 line = line.strip() wordline = line.split() for word in wordline: if(word == ‘--‘): continue word = word.strip(string.punctuation) word = word.lower() addword(word,Wdict)def Printf(Wdict): #對字典內容排序輸出函數 resultwords = [[val,key] for key,val in Wdict.items()] resultwords.sort(reverse=True) print("%-12s%-10s"%(‘word‘,‘Count‘)) print(‘-‘*21) for Count,Word in resultwords: if(Count>2): print("%-13s%-3d"%(Word,Count))Wdict = {} #在這也可以將下面的代碼封裝到main(),然後執行main()運行程式FileODJ = open(‘wordtest.txt‘,‘rU‘)for line in FileODJ: collect(line,Wdict)Printf(Wdict)
Python學習日記---字典