亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Python字典小結(jié)

BoYang / 2961人閱讀

摘要:我們用函數(shù),來(lái)簡(jiǎn)單快捷地創(chuàng)建這個(gè)字典輸出結(jié)果與原先代碼一致。示例代碼如下版本為無(wú)序字典有序字典輸出的結(jié)果為無(wú)序字典有序字典默認(rèn)字典是內(nèi)建類(lèi)的一個(gè)子類(lèi),第一個(gè)參數(shù)為屬性提供初始值,默認(rèn)為。

??字典(dict)結(jié)構(gòu)是Python中常用的數(shù)據(jù)結(jié)構(gòu),筆者結(jié)合自己的實(shí)際使用經(jīng)驗(yàn),對(duì)字典方面的相關(guān)知識(shí)做個(gè)小結(jié),希望能對(duì)讀者一些啟發(fā)~

創(chuàng)建字典

??常見(jiàn)的字典創(chuàng)建方法就是先建立一個(gè)空字典,然后逐一添加鍵(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)建方式簡(jiǎn)單原始,代碼不夠簡(jiǎn)潔優(yōu)雅。我們用zip函數(shù),來(lái)簡(jiǎn)單快捷地創(chuàng)建這個(gè)字典:

attrs = ["name", "age", "city", "ID"]
values = ["Tom", 22, "Shanghai", "073569"]
person = dict(zip(attrs, values))

print(person)

輸出結(jié)果與原先代碼一致。

遍歷字典

??在實(shí)際應(yīng)用中,我們常常需要遍歷字典,實(shí)現(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
對(duì)調(diào)鍵值對(duì)

??在實(shí)際應(yīng)用中,有時(shí)候我們需要查找字典中某個(gè)值(value)對(duì)應(yīng)的鍵(key),遍歷字典是一種選擇,對(duì)調(diào)鍵值對(duì)是另一種選擇。對(duì)調(diào)鍵值對(duì)的實(shí)現(xiàn)代碼如下:

attrs = ["name", "age", "city", "ID"]
values = ["Tom", 22, "Shanghai", "073569"]
person = dict(zip(attrs, values))

print("對(duì)調(diào)前:")
print(person)

Person = {v:k for k,v in person.items()}

print("對(duì)調(diào)后:")
print(Person)

輸出結(jié)果為:

對(duì)調(diào)前:
{"name": "Tom", "age": 22, "city": "Shanghai", "ID": "073569"}
對(duì)調(diào)后:
{"Tom": "name", 22: "age", "Shanghai": "city", "073569": "ID"}
有序字典OrderedDict

??Python中的字典是無(wú)序的,其取出來(lái)的鍵是無(wú)序的,因?yàn)樗前凑説ash來(lái)儲(chǔ)存的。有時(shí)候,我們需要字典的條目(items)或鍵(keys)是有序儲(chǔ)存的,這時(shí)候可以使用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("無(wú)序字典(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é)果為:

無(wú)序字典(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類(lèi)的一個(gè)子類(lèi),第一個(gè)參數(shù)為default_factory屬性提供初始值,默認(rèn)為None。它覆蓋一個(gè)方法并添加一個(gè)可寫(xiě)實(shí)例變量。它的其他功能與dict相同,但會(huì)為一個(gè)不存在的鍵提供默認(rèn)值,從而避免KeyError異常。
??我們以統(tǒng)計(jì)列表中單詞的詞頻為例,展示collections.defaultdict的優(yōu)勢(shì)。
??一般情形下,我們統(tǒng)計(jì)列表中的單詞詞頻代碼為:

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,代碼可以?xún)?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)已開(kāi)通微信公眾號(hào): Python爬蟲(chóng)與算法(微信號(hào)為:easy_web_scrape), 歡迎大家關(guān)注哦~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/44815.html

相關(guān)文章

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

    摘要:本文針對(duì)前面利用所做的一次數(shù)據(jù)匹配實(shí)驗(yàn),整理了其中的一些對(duì)于文件的讀寫(xiě)操作和常用的數(shù)據(jù)結(jié)構(gòu)如字典和列表之間的轉(zhuǎn)換文件與列表之間的轉(zhuǎn)換將列表轉(zhuǎn)換為文件將嵌套字典的列表轉(zhuǎn)換為文件將列表轉(zhuǎn)換為文件最基本的轉(zhuǎn)換,將列表中的元素逐行寫(xiě)入到文件中將嵌套 本文針對(duì)前面利用Python 所做的一次數(shù)據(jù)匹配實(shí)驗(yàn),整理了其中的一些對(duì)于csv文件的讀寫(xiě)操作和常用的Python數(shù)據(jù)結(jié)構(gòu)(如字典和列表)之間的轉(zhuǎn)...

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

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

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

    摘要:如果你有疑問(wèn),或許可以參考創(chuàng)建密鑰使用谷歌將語(yǔ)音轉(zhuǎn)換為文字。將其取出,得到字典。 在之前發(fā)布的使用谷歌Cloud Speech API將語(yǔ)音轉(zhuǎn)換為文字一文中,我們實(shí)現(xiàn)了在控制臺(tái)使用curl發(fā)送post請(qǐng)求,得到語(yǔ)音轉(zhuǎn)文字的結(jié)果;而在Python中使用谷歌Cloud Speech API將語(yǔ)音轉(zhuǎn)換為文字一文中,我們實(shí)現(xiàn)了安裝Cloud Speech API客戶(hù)端庫(kù),通過(guò)調(diào)用庫(kù)函數(shù)得到語(yǔ)音...

    ethernet 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<