資源描述:
《python基礎(chǔ)教程09dictionaries》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、字典?車萬翔哈爾濱工業(yè)大學(xué)?什么是字典(Dictionary)???一系列“鍵-值(key-value)”對?通過“鍵”查找對應(yīng)的“值”??類似紙質(zhì)字典,通過單詞索引表找到其相應(yīng)的定義?C++:?map、Java:?HashTable?or?HashMap?例如:電話本姓名(鍵)電話號碼(值)John?86411234?Bob?86419453?Mike?86412387?……?……?字典的使用??創(chuàng)建字典?使用{?}創(chuàng)建字典?使用?:?指明?鍵:值?對??my_dict=?{'John':?86411234,'Bob':?
2、86419453,'Mike':?86412387}??鍵必須是不可變的且不重復(fù),值可以是任意類型?訪問字典?使用[?]?運(yùn)算符,鍵作為索引?printmy_dict['Bob']??printmy_dict['Tom']?#WRONG!??增加一個新的對?my_dict['Tom']=86417639?字典運(yùn)算符和方法?len(my_dict)??字典中鍵-值對的數(shù)量?key?inmy_dict?快速判斷?key?是否為字典中的鍵:O(1)??等價于?my_dict.has_key(key)??for?key?inmy_d
3、ict:??枚舉字典中的鍵,注:鍵是無序的??更多的方法??my_dict.items()?–?全部的鍵-值對?my_dict.keys()?–?全部的鍵??my_dict.values()?–?全部的值??my_dict.clear()?–?清空字典?示例:字母計數(shù)?讀取一個字符串,計算每個字母出現(xiàn)的個數(shù)?方案一?生成26個變量,代表每個字母出現(xiàn)的個數(shù)?方案二?生成具有26個元素的列表,將每個字母轉(zhuǎn)化為相應(yīng)的索引值,如?a???0,b???1,…?方案三?生成一個字典,字母做鍵,對應(yīng)出現(xiàn)的次數(shù)做值示例:單詞計數(shù)?讀取小說"
4、emma.txt",打印前?10?個最常見單詞?是否還能直觀的將每個單詞轉(zhuǎn)化為相應(yīng)的數(shù)字?示例:翻轉(zhuǎn)字典??生成一個新字典,其鍵為原字典的值,值為元字典的鍵?同一個值,可能對應(yīng)多個鍵,需要用列表存儲?集合(Set)??集合?無序不重復(fù)元素(鍵)集?和字典類似,但是無“值”?創(chuàng)建?x?=?set()??添加和刪除運(yùn)算符含義?x.add('body')?-?差集??x.remove('body')?&?交集?
5、?并集??集合的運(yùn)算符!=?不等于?==?等于?in?成員for?key?in?set?枚舉示例:中文分詞??我愛北京天
6、安門。?我/愛/北京/天安門/。?算法:正向最大匹配?從左到右取盡可能長的詞?如:研究生命的起源?研究生/命/的/起源?“研究生”是詞,且比“研究”更長?加載詞典:lexicon.dic示例:中文分詞??正向最大匹配分詞數(shù)據(jù)結(jié)構(gòu)對比string?list?tuple?set?dictMutable?Sequential?Sortable?SlicableIndex/key?type?Item/value?type?Search?complexity?數(shù)據(jù)結(jié)構(gòu)對比string?list?tuple?set?dictMutabl
7、e?No?Yes?No?Yes?Yes??Sequential?Yes?Yes?Yes?No?No?Sortable?Yes?Yes?Yes?No?No?SlicableYes?Yes?Yes?No?No?Index/key?type?IntIntIntImmutImmutItem/value?type?Char?Any?Any?No?Any?Search?O(n)?O(n)?O(n)?O(1)?O(1)?complexity