當前位置:成語大全網 - 書法字典 - python中的字典是如何定義的?

python中的字典是如何定義的?

本文主要介紹Python中內置數據類型list、tuple、dict和set的區別和用法,都是非常基礎的知識,非常詳細全面,有需要的朋友可以參考。

Python語言簡單明了,用更少的代碼就能實現同樣的功能。其中,Python的四種內置數據類型不可或缺,分別是list、tuple、dict和set。以下是對它們的簡要總結。

目錄

字面意思是壹套。在Python中,列表中的元素由括號【】表示,列表可以定義如下:

l =【12,‘中國‘,19.998】

可以看出,元素的類型不需要相同。當然,您也可以定義壹個空列表:

L =【】

Python中的列表是有序的,因此如果要訪問列表,顯然應該通過序列號來訪問它,就像數組的下標壹樣,從0開始:

& gt& gt& gt打印L【0】

12

千萬不要越界,否則妳會報錯。

& gt& gt& gt打印L【3】

回溯(最近壹次呼叫):

文件“<標準輸入》,第1行,in & lt模塊& gt

索引錯誤:列表索引超出範圍

該列表也可以以相反的順序訪問,序列號由下標表示,例如“從底部開始的X”。例如,下標-1表示倒數第壹個元素:

& gt& gt& gtl =【12,‘中國‘,19.998】

& gt& gt& gt打印L【-1】

19.998

-4明顯出格。

& gt& gt& gt打印L【-4】

回溯(最近壹次呼叫):

文件“<pyshell#2》,第1行,in & lt模塊& gt

打印L【-4】

索引錯誤:列表索引超出範圍

& gt& gt& gt

內置append()方法將列表添加到尾部,insert()方法將列表添加到指定位置(下標從0開始):

& gt& gt& gtl =【12,‘中國‘,19.998】

& gt& gt& gtl .追加(“傑克”)

& gt& gt& gt打印L

【12,‘中國’,19.998,‘傑克’】

& gt& gt& gtl . insert(1,3.14)

& gt& gt& gt打印L

【12,3.14,‘中國’,19.998,‘傑克’】

& gt& gt& gt

通過pop()刪除最後壹個尾部元素,或者可以指定壹個參數來刪除指定位置:

& gt& gt& gt流行樂()

傑克

& gt& gt& gt打印L

【12,3.14,‘中國‘,19.998】

& gt& gt& gt流行音樂(0)

12

& gt& gt& gt打印L

【3.14,‘中國‘,19.998】

您也可以復制和替換下標。

& gt& gt& gtl【1】=“美國”

& gt& gt& gt打印L

【3.14,‘美國‘,19.998】

元組

元組可以被視為“不可更改”的列表,訪問也由下標和括號()表示:

& gt& gt& gtt =(3.14,‘中國’,‘傑森’)

& gt& gt& gt打印t

(3.14,“中國”,“傑森”)

但是您不能重新分配替代者:

& gt& gt& gtt【1】=‘美國‘

回溯(最近壹次呼叫):

文件“<pyshell#21》,第1行,in & lt模塊& gt

t【1】=‘美國‘

類型錯誤:“元組”對象不支持項分配

也沒有pop、insert和append方法。

您可以創建壹個空元素元組:

t =()

或者單元素元組(例如添加逗號以防止和聲明塑性歧義):

t =(3.14

那麽這種類型的元組有什麽用呢?妳知道,如果妳想讓壹個函數返回多個返回值,妳只需要返回壹個元組,因為元組包含多個值並且是不可變的(就像java中的final壹樣)。當然,元組也是可變的,例如:

& gt& gt& gtt =(3.14,‘中國‘,‘傑森‘,【‘A‘,B‘】)

& gt& gt& gt打印t

(3.14,‘中國‘,‘傑森‘,【‘A‘,B‘】)

& gt& gt& gtl = t【3】

& gt& gt& gtl【0】= 122

& gt& gt& gtl【1】= 233

& gt& gt& gt打印t

(3.14,‘中國’,‘傑森’,【122,233】)

這是因為Tuple的所謂不可變性意味著指向位置是不可變的,因為本例中的第四個元素不是基本類型,而是列表類型,所以T指向的列表的位置是不變的,但列表本身的內容是可以改變的,因為列表本身在內存中的分配是不連續的。

詞典

Dict是Python中非常重要的數據類型。就像它的字面意思壹樣,它是壹本活字典,實際上是壹個鍵-值鍵-值對。類似於HashMap,它可以由花括號{}定義,類似於定義C語言的結構:

& gt& gt& gtd = {

亞當:95年,

麗莎:85歲,

巴特:59歲,

保羅:75歲

}

& gt& gt& gt打印d

{“麗莎”:85歲,“保羅”:75歲,“亞當”:95歲,“巴特”:59歲}

可以看到打印出來的結果都是Key:Value的格式,它的長度可以通過len函數(List,tuple也可以)計算出來:

& gt& gt& gt鏡頭

您可以通過鍵值對直接在dict中添加元素:

& gt& gt& gt打印d

{“麗莎”:85歲,“保羅”:75歲,“亞當”:95歲,“巴特”:59歲}

& gt& gt& gtd【瓊斯】= 99

& gt& gt& gt打印d

{“麗莎”:85歲,“保羅”:75歲,“亞當”:95歲,“瓊斯”:99歲,“巴特”:59歲}

List和tuple使用下標來訪問內容,而dict使用鍵:(String、integer、floating-point和Tuple都可以用作Dict鍵)。

& gt& gt& gt印刷體d【‘亞當‘】

95

如果密鑰不存在,將會報告壹個錯誤:

& gt& gt& gt印刷體d【‘Jack‘】

回溯(最近壹次呼叫):

文件“<pyshell#40》,第1行,in & lt模塊& gt

印刷體d【‘Jack‘】

關鍵錯誤:“傑克”

因此,最好在訪問之前檢查密鑰是否存在:

& gt& gt& gt如果d中的“Adam ”:打印“exist key”

現有密鑰

或者直接使用保險獲取方法:

& gt& gt& gt打印d . get(‘亞當‘)

95

& gt& gt& gt打印d . get(‘Jason‘)

沒有人

至於遍歷dict,它實際上是遍歷其所有鍵的集合,然後使用這個鍵獲得相應的值:

& gt& gt& gt對於d中的鍵:打印鍵:‘:‘,d . get(key)

麗莎:85歲

保羅:75歲

亞當:95歲

巴特:59歲

Dict有壹些特點:

搜索速度很快。無論是10還是65438+100,000,速度都是壹樣的,但要占用大量內存。另壹方面,List占用的內存較少,但搜索速度較慢。這就像數組和鏈表的區別。數組不知道要打開多少空間,所以它們通常在開始時會打開很大的空間,但直接通過下標搜索會很快。但是鏈表占用的空間很小,但搜索時必須按順序遍歷,導致速度很慢。

沒有順序。Dict是無序的,List是有序的集合,所以不能用Dict存儲有序的集合。

鍵是不可變的,值是可變的。壹旦壹個鍵-值對被添加到dict中,其對應的鍵就不能更改,但值可以更改。因此List不能用作Dict的鍵,但可以用作值:

& gt& gt& gt打印d

{“麗莎”:85歲,“保羅”:75歲,“亞當”:95歲,“瓊斯”:99歲,“巴特”:59歲}

& gt& gt& gtd【‘NewList‘】=【12,23,Jack】

& gt& gt& gt打印d

{‘巴特‘:59,‘新列表‘:【12,23,‘傑克‘】,‘亞當‘:95,‘瓊斯‘:99,‘麗莎‘:85,‘保羅‘:75 }

密鑰不能重復。(在下面的示例中,添加了壹個“Jone”:0,但實際上鍵“Jone”已經存在,因此原始值只是被更改了。)

& gt& gt& gt打印d

{‘巴特‘:59,‘新列表‘:【12,23,‘傑克‘】,‘亞當‘:95,‘瓊斯‘:99,‘麗莎‘:85,‘保羅‘:75 }

& gt& gt& gtd【‘瓊斯‘】= 0

& gt& gt& gt打印d

{‘Bart‘:59,‘NewList‘:【12,23,Jack】,‘Adam‘:95,‘Jone‘:0,‘Lisa‘:85,‘Paul‘:75 }

Dict merge,如何將兩個Dict合並為壹個,可以使用dict函數:

& gt& gt& gtd 1 = {‘邁克‘:12,‘傑克‘:19 }

& gt& gt& gtD2 = {‘jone‘:22,‘ivy‘:17 }

& gt& gt& gtd merge = dict(d 1 . items()+D2 . items())

& gt& gt& gt打印數據合並

{‘邁克‘:12,‘傑克‘:19,‘瓊斯‘:22,‘艾薇‘:17 }

或者

& gt& gt& gtd merge 2 = dict(d 1,**d2)

& gt& gt& gt打印數據合並2

{‘邁克‘:12,‘傑克‘:19,‘瓊斯‘:22,‘艾薇‘:17 }

方法2比方法1快得多,方法2相當於:

& gt& gt& gtd merge 3 = dict(d 1)

& gt& gt& gtd merge 3 . update(D2)

& gt& gt& gt打印數據合並

{‘邁克‘:12,‘傑克‘:19,‘瓊斯‘:22,‘艾薇‘:17 }

設置

設置就像在Dict中拔出鑰匙,類似於列表,但內容不能重復。它是通過調用set()方法創建的:

& gt& gt& gts =集合(【‘A‘,‘B‘,‘C‘】)

就像dict是無序的壹樣,set也是無序的,不能包含重復的元素。

訪問集合的意義僅在於查看元素是否在該集合中:

& gt& gt& gt在s中打印“A”

真實的

& gt& gt& gt在s中打印“D”

錯誤的

大小寫敏感。

它還被遍歷用於:

s =集合(【(‘亞當‘,95),(‘麗莎‘,85),(‘巴特‘,59))

#元組

對於s中的x:

打印x【0】,‘:‘,x【1】

& gt& gt& gt

麗莎:85歲

亞當:95歲

巴特:59歲

添加和刪除元素(不重復)。添加元素時,請使用set的add()方法:

& gt& gt& gts =集合(【1,2,3】)

& gt& gt& gts . add(4)

& gt& gt& gt打印s

集合(【1,2,3,4】)

如果添加的元素已經存在於集合中,add()不會給出錯誤,但它不會被添加:

& gt& gt& gts =集合(【1,2,3】)

& gt& gt& gts . add(3)

& gt& gt& gt打印s

集合(【1,2,3】)

刪除集合中的元素時,請使用集合的remove()方法:

& gt& gt& gts =集合(【1,2,3,4】)

& gt& gt& gt移除(4)

& gt& gt& gt打印s

集合(【1,2,3】)

如果刪除的元素不在集合中,remove()將報告錯誤:

& gt& gt& gts =集合(【1,2,3】)

& gt& gt& gt移除(4)

回溯(最近壹次呼叫):

文件“<標準輸入》,第1行,in & lt模塊& gt

關鍵錯誤:4

所以如果我們要判斷壹個元素是否滿足壹些不同的條件,set是最好的選擇。下面的例子:

months =集合(【‘壹月‘,‘二月‘,‘三月‘,‘四月‘,‘五月‘,‘六月‘,‘七月‘,‘八月‘,‘九月‘,‘十月‘,‘十壹月‘,‘十二月‘,】)

x 1 =‘Feb‘

x2 =‘Sun‘

如果x1以月為單位:

打印“x1:正常”

否則:

打印“x1:錯誤”

如果x2以月為單位:

打印“x2:正常”

否則:

打印“x2:錯誤”

& gt& gt& gt

x1:好的

x2:錯誤