摘要:我們用函數(shù),來簡單快捷地創(chuàng)建這個字典輸出結(jié)果與原先代碼一致。示例代碼如下版本為無序字典有序字典輸出的結(jié)果為無序字典有序字典默認(rèn)字典是內(nèi)建類的一個子類,第一個參數(shù)為屬性提供初始值,默認(rèn)為。
??字典(dict)結(jié)構(gòu)是Python中常用的數(shù)據(jù)結(jié)構(gòu),筆者結(jié)合自己的實際使用經(jīng)驗,對字典方面的相關(guān)知識做個小結(jié),希望能對讀者一些啟發(fā)~
創(chuàng)建字典??常見的字典創(chuàng)建方法就是先建立一個空字典,然后逐一添加鍵(key)和值(value),比如創(chuàng)建字典person={"name":"Tome", "age":22, "city":"Shanghai, "ID": "073569"},可以使用以下代碼:
person = {} person["name"] = "Tom" person["age"] = 22 person["city"] = "Shanghai" person["ID"] = "073569" print(person)
輸出結(jié)果為:
{"name": "Tom", "age": 22, "city": "Shanghai", "ID": "073569"}
這樣的創(chuàng)建方式簡單原始,代碼不夠簡潔優(yōu)雅。我們用zip函數(shù),來簡單快捷地創(chuàng)建這個字典:
attrs = ["name", "age", "city", "ID"] values = ["Tom", 22, "Shanghai", "073569"] person = dict(zip(attrs, values)) print(person)
輸出結(jié)果與原先代碼一致。
遍歷字典??在實際應(yīng)用中,我們常常需要遍歷字典,實現(xiàn)的方法可參考以下代碼:
attrs = ["name", "age", "city", "ID"] values = ["Tom", 22, "Shanghai", "073569"] person = dict(zip(attrs, values)) for key, value in person.items(): print("Key:%-6s, Value:%s"%(key, value))
輸出結(jié)果為:
Key:name , Value:Tom Key:age , Value:22 Key:city , Value:Shanghai Key:ID , Value:073569對調(diào)鍵值對
??在實際應(yīng)用中,有時候我們需要查找字典中某個值(value)對應(yīng)的鍵(key),遍歷字典是一種選擇,對調(diào)鍵值對是另一種選擇。對調(diào)鍵值對的實現(xiàn)代碼如下:
attrs = ["name", "age", "city", "ID"] values = ["Tom", 22, "Shanghai", "073569"] person = dict(zip(attrs, values)) print("對調(diào)前:") print(person) Person = {v:k for k,v in person.items()} print("對調(diào)后:") print(Person)
輸出結(jié)果為:
對調(diào)前: {"name": "Tom", "age": 22, "city": "Shanghai", "ID": "073569"} 對調(diào)后: {"Tom": "name", 22: "age", "Shanghai": "city", "073569": "ID"}有序字典OrderedDict
??Python中的字典是無序的,其取出來的鍵是無序的,因為它是按照hash來儲存的。有時候,我們需要字典的條目(items)或鍵(keys)是有序儲存的,這時候可以使用collections模塊中的OrderedDict,它是一種有序的字典結(jié)構(gòu)。
??示例代碼如下(Python版本為3.5.2):
from collections import OrderedDict d = {} d["Tom"]="A" d["Jack"]="B" d["Leo"]="C" d["Alex"]="D" print("無序字典(dict):") for k,v in d.items(): print(k,v) d1 = OrderedDict() d1["Tom"]="A" d1["Jack"]="B" d1["Leo"]="C" d1["Alex"]="D" print(" 有序字典(OrderedDict):") for k,v in d1.items(): print(k,v)
輸出的結(jié)果為:
無序字典(dict): Leo C Jack B Tom A Alex D 有序字典(OrderedDict): Tom A Jack B Leo C Alex D默認(rèn)字典collections.defaultdict
??collections.defaultdict是Python內(nèi)建dict類的一個子類,第一個參數(shù)為default_factory屬性提供初始值,默認(rèn)為None。它覆蓋一個方法并添加一個可寫實例變量。它的其他功能與dict相同,但會為一個不存在的鍵提供默認(rèn)值,從而避免KeyError異常。
??我們以統(tǒng)計列表中單詞的詞頻為例,展示collections.defaultdict的優(yōu)勢。
??一般情形下,我們統(tǒng)計列表中的單詞詞頻代碼為:
words = ["sun", "moon", "star", "star", "star", "moon", "sun", "star"] freq_dict = {} for word in words: if word not in freq_dict.keys(): freq_dict[word] = 1 else: freq_dict[word] += 1 for key, val in freq_dict.items(): print(key, val)
輸出結(jié)果如下:
sun 2 moon 2 star 4
??使用collections.defaultdict,代碼可以優(yōu)化:
from collections import defaultdict words = ["sun", "moon", "star", "star", "star", "moon", "sun", "star"] freq_dict = defaultdict(int) for word in words: freq_dict[word] += 1 for key, val in freq_dict.items(): print(key, val)
其它默認(rèn)初始值可以為set,list,dict等。
注意:本人現(xiàn)已開通微信公眾號: Python爬蟲與算法(微信號為:easy_web_scrape), 歡迎大家關(guān)注哦~~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44815.html
摘要:本文針對前面利用所做的一次數(shù)據(jù)匹配實驗,整理了其中的一些對于文件的讀寫操作和常用的數(shù)據(jù)結(jié)構(gòu)如字典和列表之間的轉(zhuǎn)換文件與列表之間的轉(zhuǎn)換將列表轉(zhuǎn)換為文件將嵌套字典的列表轉(zhuǎn)換為文件將列表轉(zhuǎn)換為文件最基本的轉(zhuǎn)換,將列表中的元素逐行寫入到文件中將嵌套 本文針對前面利用Python 所做的一次數(shù)據(jù)匹配實驗,整理了其中的一些對于csv文件的讀寫操作和常用的Python數(shù)據(jù)結(jié)構(gòu)(如字典和列表)之間的轉(zhuǎn)...
摘要:以自定義字典為例僅作演示,不保證其它功能的完備性貓輸出結(jié)果上例的關(guān)鍵點在于將字典的鍵值取出,并對鍵值的列表做切片處理,其妙處在于,不用擔(dān)心索引越界和負(fù)數(shù)索引,將字典切片轉(zhuǎn)換成了字典鍵值的切片,最終實現(xiàn)目的。 2018-12-31 更新聲明:切片系列文章本是分三篇寫成,現(xiàn)已合并成一篇。合并后,修正了一些嚴(yán)重的錯誤(如自定義序列切片的部分),還對行文結(jié)構(gòu)與章節(jié)銜接做了大量改動。原系列的單篇...
摘要:如果你有疑問,或許可以參考創(chuàng)建密鑰使用谷歌將語音轉(zhuǎn)換為文字。將其取出,得到字典。 在之前發(fā)布的使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字一文中,我們實現(xiàn)了在控制臺使用curl發(fā)送post請求,得到語音轉(zhuǎn)文字的結(jié)果;而在Python中使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字一文中,我們實現(xiàn)了安裝Cloud Speech API客戶端庫,通過調(diào)用庫函數(shù)得到語音...
閱讀 6965·2021-09-22 15:08
閱讀 1975·2021-08-24 10:03
閱讀 2482·2021-08-20 09:36
閱讀 1364·2020-12-03 17:22
閱讀 2504·2019-08-30 15:55
閱讀 940·2019-08-29 16:13
閱讀 3089·2019-08-29 12:41
閱讀 3283·2019-08-26 12:12