摘要:字典,這個東西你現在還用嗎隨著網絡的發展,用的人越來越少了。最早的名字叫伍記小字典,但未能編纂完成。新華字典由商務印書館出版。成為迄今為止世界出版史上最高發行量的字典。也被稱為關聯數組或哈希表。
字典,這個東西你現在還用嗎?隨著網絡的發展,用的人越來越少了。不少人習慣于在網上搜索,不僅有web版,乃至于已經有手機版的各種字典了。我曾經用過一本小小的《新華字典》。
《新華字典》是中國第一部現代漢語字典。最早的名字叫《伍記小字典》,但未能編纂完成。自1953年,開始重編,其凡例完全采用《伍記小字典》。從1953年開始出版,經過反復修訂,但是以1957年商務印書館出版的《新華字典》作為第一版。原由新華辭書社編寫,1956年并入中科院語言研究所(現中國社科院語言研究所)詞典編輯室。新華字典由商務印書館出版。歷經幾代上百名專家學者10余次大規模的修訂,重印200多次。成為迄今為止世界出版史上最高發行量的字典。
這里講到字典,不是為了敘舊。而是提醒看官想想我們如何使用字典:先查索引(不管是拼音還是偏旁查字),然后通過索引找到相應內容。
這種方法能夠快捷的找到目標。
在python中,也有一種數據與此相近,不僅相近,這種數據的名稱就叫做dictionary,翻譯過來是字典,類似于前面的int/str/list,這種類型數據名稱是:dict
依據管理,要知道如何建立dict和它有關屬性方法。
因為已經有了此前的基礎,所以,學這個就可以加快了。
前面曾經建議看官一個很好的學習探究方法,比如想了解str的有關屬性方法,可以在交互模式下使用:
>>>help(str)
將得到所有的有關內容。
現在換一個,使用dir,也能得到相同的結果。只是簡單一些罷了。請在交互模式下:
>>> 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"]
以__(雙下劃線)開頭的先不管??春竺娴?。如果要想深入了解,可以這樣:
>>> help(dict.values)
然后出現:
Help on method_descriptor: values(...) D.values() -> list of D"s values (END)
也就是在這里顯示出了values這個內置函數的使用方法。敲擊鍵盤上的q鍵退回。
概述python中的dict具有如下特點:
dict是可變的
dict可以存儲任意數量的Python對象
dict可以存儲任何python數據類型
dict以:key:value,即“鍵:值”對的形式存儲數據,每個鍵是唯一的。
dict也被稱為關聯數組或哈希表。
以上諸條,如果還不是很理解,也沒有關系,通過下面的學習,特別是通過各種實驗,就能理解了。
創建dict話說創建dict的方法可是遠遠多于前面的int/str/list,為什么會多呢?一般規律是復雜點的東西都會有多種渠道生成,這也是從安全便捷角度考慮吧。
方法1:
創建一個空的dict,這個空dict,可以在以后向里面加東西用。
>>> mydict = {} >>> mydict {}
創建有內容的dict。
>>> person = {"name":"qiwsir","site":"qiwsir.github.io","language":"python"} >>> person {"name": "qiwsir", "language": "python", "site": "qiwsir.github.io"}
"name":"qiwsir"就是一個鍵值對,前面的name叫做鍵(key),后面的qiwsir是前面的鍵所對應的值(value)。在一個dict中,鍵是唯一的,不能重復;值則是對應于鍵,值可以重復。鍵值之間用(:)英文的分號,每一對鍵值之間用英文的逗號(,)隔開。
>>> person["name2"]="qiwsir" #這是一種向dict中增加鍵值對的方法 >>> person {"name2": "qiwsir", "name": "qiwsir", "language": "python", "site": "qiwsir.github.io"}
如下,演示了從一個空的dict開始增加內容的過程:
>>> 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 #如果這樣,則是修改這個鍵的值 >>> mydict {1: 90, 2: "python", "site": "qiwsir.github.io", "name": ["zhangsan", "lisi", "wangwu"]}
方法2:
>>> name = (["first","Google"],["second","Yahoo"]) #這是另外一種數據類型,稱之為元組,后面會講到 >>> website = dict(name) >>> website {"second": "Yahoo", "first": "Google"}
方法3:
這個方法,跟上面的不同在于使用fromkeys
>>> website = {}.fromkeys(("third","forth"),"facebook") >>> website {"forth": "facebook", "third": "facebook"}
需要提醒的是,這種方法是從新建立一個dict。
訪問dict的值因為dict是以鍵值對的形式存儲數據的,所以,只要知道鍵,就能得到值。這本質上就是一種映射關系。
>>> 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
如同前面所講,通過鍵能夠增加dict中的值,通過鍵能夠改變dict中的值,通過鍵也能夠訪問dict中的值。
看官可以跟list對比一下。如果我們訪問list中的元素,可以通過索引值得到(list[i]),如果是讓機器來巡回訪問,就可以用for語句。復習一下:
>>> person_list = ["qiwsir","Newton","Boolean"] >>> for name in person_list: ... print name ... qiwsir Newton Boolean
那么,dict是不是也可以用for語句來循環訪問呢?當然可以,來看例子:
>>> person {"name2": "qiwsir", "name": "qiwsir", "language": "python", "site": "qiwsir.github.io"} >>> for key in person: ... print person[key] ... qiwsir qiwsir python qiwsir.github.io知識
什么是關聯數組?以下解釋來自維基百科
在計算機科學中,關聯數組(英語:Associative Array),又稱映射(Map)、字典(Dictionary)是一個抽象的數據結構,它包含著類似于(鍵,值)的有序對。一個關聯數組中的有序對可以重復(如C++中的multimap)也可以不重復(如C++中的map)。
這種數據結構包含以下幾種常見的操作:
1.向關聯數組添加配對
2.從關聯數組內刪除配對
3.修改關聯數組內的配對
4.根據已知的鍵尋找配對
字典問題是設計一種能夠具備關聯數組特性的數據結構。解決字典問題的常用方法,是利用散列表,但有些情況下,也可以直接使用有地址的數組,或二叉樹,和其他結構。
許多程序設計語言內置基本的數據類型,提供對關聯數組的支持。而Content-addressable memory則是硬件層面上實現對關聯數組的支持。
什么是哈希表?關于哈希表的敘述比較多,這里僅僅截取了概念描述,更多的可以到維基百科上閱讀。
散列表(Hash table,也叫哈希表),是根據關鍵字(Key value)而直接訪問在內存存儲位置的數據結構。也就是說,它通過把鍵值通過一個函數的計算,映射到表中一個位置來訪問記錄,這加快了查找速度。這個映射函數稱做散列函數,存放記錄的數組稱做散列表。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45287.html
摘要:操練一下字符串吧。它是在告訴計算機,它里面包裹著的是一個字符串。連接字符串方法在中按照下面方法操作老齊教老齊教這是一種最簡單連接兩個字符串的方法。請看官字符編碼就知道了。 如果對自然語言分類,有很多中分法,比如英語、法語、漢語等,這種分法是最常見的。在語言學里面,也有對語言的分類方法,比如什么什么語系之類的。我這里提出一種分法,這種分法尚未得到廣大人民群眾和研究者的廣泛認同,但是,我相...
摘要:語句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個元素。與配合使用處理在程序運行中出現的異常情況。表示此行為空,不運行任何操作。在迭代器函數內使用,用于返回一個元素。恭請到上瀏覽及時更新的教程零基礎學 小孩子剛剛開始學說話的時候,常常是一個字一個字地開始學,比如學說餃子,對他/她來講,似乎有點難度,大人也聰明,于是就簡化了,用餃餃來代替,其實就是讓孩子學會一個字就能表達。當然...
摘要:我的決定是學人工智能,當時對這個比較感興趣。從機器學習學到深度學習再學回機器學習。面試,成功地去公司從事機器學習深度學習方面的基礎工作。這個系列不僅僅以學習為目的,目的是為了達到機器學習的工作入門標準。 每個字都是經驗所得,都是站在一個零基礎的人的角度寫的,純手打+網上優秀資源整合,希望大家能每個字都認真看。 接下來文章會側重在以下幾方面 1、零基礎如何進行人工智能的自學(以找工作為目...
閱讀 883·2021-11-22 12:04
閱讀 2088·2021-11-02 14:46
閱讀 616·2021-08-30 09:44
閱讀 2098·2019-08-30 15:54
閱讀 715·2019-08-29 13:48
閱讀 1587·2019-08-29 12:56
閱讀 3441·2019-08-28 17:51
閱讀 3279·2019-08-26 13:44