成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python字典小結(jié)

BoYang / 2883人閱讀

摘要:我們用函數(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

相關(guān)文章

  • csv文件與字典,列表等之間的轉(zhuǎn)換小結(jié)Python

    摘要:本文針對前面利用所做的一次數(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)...

    econi 評論0 收藏0
  • Python進(jìn)階:自定義對象實現(xiàn)切片功能

    摘要:以自定義字典為例僅作演示,不保證其它功能的完備性貓輸出結(jié)果上例的關(guān)鍵點在于將字典的鍵值取出,并對鍵值的列表做切片處理,其妙處在于,不用擔(dān)心索引越界和負(fù)數(shù)索引,將字典切片轉(zhuǎn)換成了字典鍵值的切片,最終實現(xiàn)目的。 2018-12-31 更新聲明:切片系列文章本是分三篇寫成,現(xiàn)已合并成一篇。合并后,修正了一些嚴(yán)重的錯誤(如自定義序列切片的部分),還對行文結(jié)構(gòu)與章節(jié)銜接做了大量改動。原系列的單篇...

    yangrd 評論0 收藏0
  • Python中使用谷歌Cloud Speech API將語音轉(zhuǎn)換為文字(另一種方案)

    摘要:如果你有疑問,或許可以參考創(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ù)得到語音...

    ethernet 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<