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