零基礎學Python 字典,你還記得嗎?

2021-06-28 01:19:12 字數 4378 閱讀 5097

字典,這個東西你現在還用嗎?隨著網路的發展,用的人越來越少了。不少人習慣於在網上搜尋,不僅有web版,乃至於已經有手機版的各種字典了。我曾經用過一本小小的《新華字典》。

《新華字典》是中國第一部現代漢語字典。最早的名字叫《伍記小字典》,但未能編纂完成。自2023年,開始重編,其凡例完全採用《伍記小字典》。從2023年開始出版,經過反覆修訂,但是以2023年商務印書館出版的《新華字典》作為第一版。原由新華辭書社編寫,2023年併入中科院語言研究所(現中國社科院語言研究所)詞典編輯室。新華字典由商務印書館出版。歷經幾代上百名專家學者10餘次大規模的修訂,重印200多次。成為迄今為止世界出版史上最高發行量的字典。

這種方法能夠快捷的找到目標。

在python中,也有一種資料與此相近,不僅相近,這種資料的名稱就叫做dictionary,翻譯過來是字典,類似於前面的int/str/list,這種型別資料名稱是:dict

依據管理,要知道如何建立dict和它有關屬性方法。

因為已經有了此前的基礎,所以,學這個就可以加快了。

>>>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的方法可是遠遠多於前面的int/str/list,為什麼會多呢?一般規律是複雜點的東西都會有多種渠道生成,這也是從安全便捷角度考慮吧。

方法1:

建立乙個空的dict,這個空dict,可以在以後向裡面加東西用。

>>> mydict = {}

>>> mydict

{}

建立有內容的dict。

>>> person = 

>>> person

"name":"qiwsir"就是乙個鍵值對,前面的name叫做鍵(key),後面的qiwsir是前面的鍵所對應的值(value)。在乙個dict中,鍵是唯一的,不能重複;值則是對應於鍵,值可以重複。鍵值之間用(:)英文的分號,每一對鍵值之間用英文的逗號(,)隔開。

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

>>> person

如下,演示了從乙個空的dict開始增加內容的過程:

>>> mydict = {}

>>> mydict

{}>>> mydict["site"] = "qiwsir.github.io"

>>> mydict[1] = 80

>>> mydict[2] = "python"

>>> mydict["name"] = ["zhangsan","lisi","wangwu"]

>>> mydict

>>> mydict[1] = 90 #如果這樣,則是修改這個鍵的值

>>> mydict

方法2:

>>> name = (["first","google"],["second","yahoo"])      #這是另外一種資料型別,稱之為元組,後面會講到

>>> website = dict(name)

>>> website

方法3:

這個方法,跟上面的不同在於使用fromkeys

>>> website = {}.fromkeys(("third","forth"),"facebook")

>>> website

需要提醒的是,這種方法是從新建立乙個dict。

因為dict是以鍵值對的形式儲存資料的,所以,只要知道鍵,就能得到值。這本質上就是一種對映關係。

>>> person

>>> 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

>>> 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)而直接訪問在記憶體儲存位置的資料結構。也就是說,它通過把鍵值通過乙個函式的計算,對映到表中乙個位置來訪問記錄,這加快了查詢速度。這個對映函式稱做雜湊函式,存放記錄的陣列稱做雜湊表。

零基礎學Python

零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...

零基礎學python 一

每次學習語言總是要了解其背景python也不例外。首先python的創始人為 guido van rossum 1989年聖誕節期間,在 阿姆斯特丹 guido為了打發聖誕節的無趣,決心開發乙個新的指令碼 解釋程式 做為abc 語言的一種繼承。看看人家外鬼子程式設計師 哎不得不佩服。他在業餘時間開發...

零基礎學Python筆記

alt n 最遠一條語句 alt p 最近一條語句 tab的兩個作用 1 縮排 2 補足 isinstance str1,str 判斷型別 s為字串 s.isalnum 所有字元都是數字或者字母,為真返回 ture,否則返回 false。s.isalpha 所有字元都是字母,為真返回 ture,否則...