跟老齊學(xué)Python之字典你還記得嗎
來(lái)源:易賢網(wǎng) 閱讀:989 次 日期:2014-09-25 10:31:34
溫馨提示:易賢網(wǎng)小編為您整理了“跟老齊學(xué)Python之字典你還記得嗎”,方便廣大網(wǎng)友查閱!

字典,這個(gè)東西你現(xiàn)在還用嗎?隨著網(wǎng)絡(luò)的發(fā)展,用的人越來(lái)越少了。不少人習(xí)慣于在網(wǎng)上搜索,不僅有web版,乃至于已經(jīng)有手機(jī)版的各種字典了。我曾經(jīng)用過(guò)一本小小的《新華字典》。

《新華字典》是中國(guó)第一部現(xiàn)代漢語(yǔ)字典。最早的名字叫《伍記小字典》,但未能編纂完成。自1953年,開(kāi)始重編,其凡例完全采用《伍記小字典》。從1953年開(kāi)始出版,經(jīng)過(guò)反復(fù)修訂,但是以1957年商務(wù)印書(shū)館出版的《新華字典》作為第一版。原由新華辭書(shū)社編寫(xiě),1956年并入中科院語(yǔ)言研究所(現(xiàn)中國(guó)社科院語(yǔ)言研究所)詞典編輯室。新華字典由商務(wù)印書(shū)館出版。歷經(jīng)幾代上百名專家學(xué)者10余次大規(guī)模的修訂,重印200多次。成為迄今為止世界出版史上最高發(fā)行量的字典。

這里講到字典,不是為了敘舊。而是提醒看官想想我們?nèi)绾问褂米值洌合炔樗饕ú还苁瞧匆暨€是偏旁查字),然后通過(guò)索引找到相應(yīng)內(nèi)容。

這種方法能夠快捷的找到目標(biāo)。

在python中,也有一種數(shù)據(jù)與此相近,不僅相近,這種數(shù)據(jù)的名稱就叫做dictionary,翻譯過(guò)來(lái)是字典,類(lèi)似于前面的int/str/list,這種類(lèi)型數(shù)據(jù)名稱是:dict

依據(jù)管理,要知道如何建立dict和它有關(guān)屬性方法。

因?yàn)橐呀?jīng)有了此前的基礎(chǔ),所以,學(xué)這個(gè)就可以加快了。

前面曾經(jīng)建議看官一個(gè)很好的學(xué)習(xí)探究方法,比如想了解str的有關(guān)屬性方法,可以在交互模式下使用:

代碼如下:

>>>help(str)

將得到所有的有關(guān)內(nèi)容。

現(xiàn)在換一個(gè),使用dir,也能得到相同的結(jié)果。只是簡(jiǎn)單一些罷了。請(qǐng)?jiān)诮换ツJ较拢?/P>

?12 >>> dir(dict) ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']

以__(雙下劃線)開(kāi)頭的先不管。看后面的。如果要想深入了解,可以這樣:

代碼如下:

>>> help(dict.values)

然后出現(xiàn):

代碼如下:

Help on method_descriptor:

values(...)

D.values() -> list of D's values

(END)

也就是在這里顯示出了values這個(gè)內(nèi)置函數(shù)的使用方法。敲擊鍵盤(pán)上的q鍵退回。

概述

python中的dict具有如下特點(diǎn):

dict是可變的

dict可以存儲(chǔ)任意數(shù)量的Python對(duì)象

dict可以存儲(chǔ)任何python數(shù)據(jù)類(lèi)型

dict以:key:value,即“鍵:值”對(duì)的形式存儲(chǔ)數(shù)據(jù),每個(gè)鍵是唯一的。

dict也被稱為關(guān)聯(lián)數(shù)組或哈希表。

以上諸條,如果還不是很理解,也沒(méi)有關(guān)系,通過(guò)下面的學(xué)習(xí),特別是通過(guò)各種實(shí)驗(yàn),就能理解了。

創(chuàng)建dict

話說(shuō)創(chuàng)建dict的方法可是遠(yuǎn)遠(yuǎn)多于前面的int/str/list,為什么會(huì)多呢?一般規(guī)律是復(fù)雜點(diǎn)的東西都會(huì)有多種渠道生成,這也是從安全便捷角度考慮吧。

方法1:

創(chuàng)建一個(gè)空的dict,這個(gè)空dict,可以在以后向里面加?xùn)|西用。

代碼如下:

>>> mydict = {}

>>> mydict

{}

創(chuàng)建有內(nèi)容的dict。

代碼如下:

>>> person = {"name":"qiwsir","site":"qiwsir.github.io","language":"python"}

>>> person

{'name': 'qiwsir', 'language': 'python', 'site': 'qiwsir.github.io'}

"name":"qiwsir"就是一個(gè)鍵值對(duì),前面的name叫做鍵(key),后面的qiwsir是前面的鍵所對(duì)應(yīng)的值(value)。在一個(gè)dict中,鍵是唯一的,不能重復(fù);值則是對(duì)應(yīng)于鍵,值可以重復(fù)。鍵值之間用(:)英文的分號(hào),每一對(duì)鍵值之間用英文的逗號(hào)(,)隔開(kāi)。

代碼如下:

>>> person['name2']="qiwsir" #這是一種向dict中增加鍵值對(duì)的方法

>>> person

{'name2': 'qiwsir', 'name': 'qiwsir', 'language': 'python', 'site': 'qiwsir.github.io'}

如下,演示了從一個(gè)空的dict開(kāi)始增加內(nèi)容的過(guò)程:

?12345678910111213 >>> mydict = {} >>> mydict {} >>> mydict["site"] = "qiwsir.github.io">>> mydict[1] = 80>>> mydict[2] = "python">>> mydict["name"] = ["zhangsan","lisi","wangwu"] >>> mydict {1: 80, 2: 'python', 'site': 'qiwsir.github.io', 'name': ['zhangsan', 'lisi', 'wangwu']} >>> mydict[1] = 90 #如果這樣,則是修改這個(gè)鍵的值 >>> mydict {1: 90, 2: 'python', 'site': 'qiwsir.github.io', 'name': ['zhangsan', 'lisi', 'wangwu']}

方法2:

?1234 >>> name = (["first","Google"],["second","Yahoo"]) #這是另外一種數(shù)據(jù)類(lèi)型,稱之為元組,后面會(huì)講到 >>> website = dict(name) >>> website {'second': 'Yahoo', 'first': 'Google'}

方法3:

這個(gè)方法,跟上面的不同在于使用fromkeys

?123 >>> website = {}.fromkeys(("third","forth"),"facebook") >>> website {'forth': 'facebook', 'third': 'facebook'}

需要提醒的是,這種方法是從新建立一個(gè)dict。

訪問(wèn)dict的值

因?yàn)閐ict是以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)的,所以,只要知道鍵,就能得到值。這本質(zhì)上就是一種映射關(guān)系。

?123456789 >>> person {'name2': 'qiwsir', 'name': 'qiwsir', 'language': 'python', 'site': 'qiwsir.github.io'} >>> person['name'] 'qiwsir'>>> person['language'] 'python'>>> site = person['site'] >>> print site qiwsir.github.io

如同前面所講,通過(guò)鍵能夠增加dict中的值,通過(guò)鍵能夠改變dict中的值,通過(guò)鍵也能夠訪問(wèn)dict中的值。

看官可以跟list對(duì)比一下。如果我們?cè)L問(wèn)list中的元素,可以通過(guò)索引值得到(list[i]),如果是讓機(jī)器來(lái)巡回訪問(wèn),就可以用for語(yǔ)句。復(fù)習(xí)一下:

?1234567 >>> person_list = ["qiwsir","Newton","Boolean"] >>> for name in person_list: ... print name ... qiwsir Newton Boolean

那么,dict是不是也可以用for語(yǔ)句來(lái)循環(huán)訪問(wèn)呢?當(dāng)然可以,來(lái)看例子:

?123456789 >>> person {'name2': 'qiwsir', 'name': 'qiwsir', 'language': 'python', 'site': 'qiwsir.github.io'} >>> for key in person: ... print person[key] ... qiwsir qiwsir python qiwsir.github.io

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:跟老齊學(xué)Python之字典你還記得嗎
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)