摘要:字典,這個(gè)東西你現(xiàn)在還用嗎隨著網(wǎng)絡(luò)的發(fā)展,用的人越來(lái)越少了。最早的名字叫伍記小字典,但未能編纂完成。新華字典由商務(wù)印書(shū)館出版。成為迄今為止世界出版史上最高發(fā)行量的字典。也被稱為關(guān)聯(lián)數(shù)組或哈希表。
字典,這個(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)是字典,類似于前面的int/str/list,這種類型數(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>
>>> 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ù)的使用方法。敲擊鍵盤上的q鍵退回。
概述python中的dict具有如下特點(diǎn):
dict是可變的
dict可以存儲(chǔ)任意數(shù)量的Python對(duì)象
dict可以存儲(chǔ)任何python數(shù)據(jù)類型
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ò)程:
>>> 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:
>>> name = (["first","Google"],["second","Yahoo"]) #這是另外一種數(shù)據(jù)類型,稱之為元組,后面會(huì)講到 >>> website = dict(name) >>> website {"second": "Yahoo", "first": "Google"}
方法3:
這個(gè)方法,跟上面的不同在于使用fromkeys
>>> 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)系。
>>> 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í)一下:
>>> 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)看例子:
>>> person {"name2": "qiwsir", "name": "qiwsir", "language": "python", "site": "qiwsir.github.io"} >>> for key in person: ... print person[key] ... qiwsir qiwsir python qiwsir.github.io知識(shí)
什么是關(guān)聯(lián)數(shù)組?以下解釋來(lái)自維基百科
在計(jì)算機(jī)科學(xué)中,關(guān)聯(lián)數(shù)組(英語(yǔ):Associative Array),又稱映射(Map)、字典(Dictionary)是一個(gè)抽象的數(shù)據(jù)結(jié)構(gòu),它包含著類似于(鍵,值)的有序?qū)ΑR粋€(gè)關(guān)聯(lián)數(shù)組中的有序?qū)梢灾貜?fù)(如C++中的multimap)也可以不重復(fù)(如C++中的map)。
這種數(shù)據(jù)結(jié)構(gòu)包含以下幾種常見(jiàn)的操作:
1.向關(guān)聯(lián)數(shù)組添加配對(duì)
2.從關(guān)聯(lián)數(shù)組內(nèi)刪除配對(duì)
3.修改關(guān)聯(lián)數(shù)組內(nèi)的配對(duì)
4.根據(jù)已知的鍵尋找配對(duì)
字典問(wèn)題是設(shè)計(jì)一種能夠具備關(guān)聯(lián)數(shù)組特性的數(shù)據(jù)結(jié)構(gòu)。解決字典問(wèn)題的常用方法,是利用散列表,但有些情況下,也可以直接使用有地址的數(shù)組,或二叉樹(shù),和其他結(jié)構(gòu)。
許多程序設(shè)計(jì)語(yǔ)言內(nèi)置基本的數(shù)據(jù)類型,提供對(duì)關(guān)聯(lián)數(shù)組的支持。而Content-addressable memory則是硬件層面上實(shí)現(xiàn)對(duì)關(guān)聯(lián)數(shù)組的支持。
什么是哈希表?關(guān)于哈希表的敘述比較多,這里僅僅截取了概念描述,更多的可以到維基百科上閱讀。
散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵字(Key value)而直接訪問(wèn)在內(nèi)存存儲(chǔ)位置的數(shù)據(jù)結(jié)構(gòu)。也就是說(shuō),它通過(guò)把鍵值通過(guò)一個(gè)函數(shù)的計(jì)算,映射到表中一個(gè)位置來(lái)訪問(wèn)記錄,這加快了查找速度。這個(gè)映射函數(shù)稱做散列函數(shù),存放記錄的數(shù)組稱做散列表。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/45287.html
摘要:操練一下字符串吧。它是在告訴計(jì)算機(jī),它里面包裹著的是一個(gè)字符串。連接字符串方法在中按照下面方法操作老齊教老齊教這是一種最簡(jiǎn)單連接兩個(gè)字符串的方法。請(qǐng)看官字符編碼就知道了。 如果對(duì)自然語(yǔ)言分類,有很多中分法,比如英語(yǔ)、法語(yǔ)、漢語(yǔ)等,這種分法是最常見(jiàn)的。在語(yǔ)言學(xué)里面,也有對(duì)語(yǔ)言的分類方法,比如什么什么語(yǔ)系之類的。我這里提出一種分法,這種分法尚未得到廣大人民群眾和研究者的廣泛認(rèn)同,但是,我相...
摘要:語(yǔ)句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個(gè)元素。與配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。表示此行為空,不運(yùn)行任何操作。在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。恭請(qǐng)到上瀏覽及時(shí)更新的教程零基礎(chǔ)學(xué) 小孩子剛剛開(kāi)始學(xué)說(shuō)話的時(shí)候,常常是一個(gè)字一個(gè)字地開(kāi)始學(xué),比如學(xué)說(shuō)餃子,對(duì)他/她來(lái)講,似乎有點(diǎn)難度,大人也聰明,于是就簡(jiǎn)化了,用餃餃來(lái)代替,其實(shí)就是讓孩子學(xué)會(huì)一個(gè)字就能表達(dá)。當(dāng)然...
摘要:我的決定是學(xué)人工智能,當(dāng)時(shí)對(duì)這個(gè)比較感興趣。從機(jī)器學(xué)習(xí)學(xué)到深度學(xué)習(xí)再學(xué)回機(jī)器學(xué)習(xí)。面試,成功地去公司從事機(jī)器學(xué)習(xí)深度學(xué)習(xí)方面的基礎(chǔ)工作。這個(gè)系列不僅僅以學(xué)習(xí)為目的,目的是為了達(dá)到機(jī)器學(xué)習(xí)的工作入門標(biāo)準(zhǔn)。 每個(gè)字都是經(jīng)驗(yàn)所得,都是站在一個(gè)零基礎(chǔ)的人的角度寫(xiě)的,純手打+網(wǎng)上優(yōu)秀資源整合,希望大家能每個(gè)字都認(rèn)真看。 接下來(lái)文章會(huì)側(cè)重在以下幾方面 1、零基礎(chǔ)如何進(jìn)行人工智能的自學(xué)(以找工作為目...
閱讀 900·2021-11-22 12:04
閱讀 2102·2021-11-02 14:46
閱讀 624·2021-08-30 09:44
閱讀 2107·2019-08-30 15:54
閱讀 728·2019-08-29 13:48
閱讀 1597·2019-08-29 12:56
閱讀 3451·2019-08-28 17:51
閱讀 3287·2019-08-26 13:44