當前位置:成語大全網 - 書法字典 - 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]

回溯(最近壹次呼叫):

文件" & lt標準輸入>,行1,在& lt模塊& gt

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

列表也可以逆序訪問,序號用壹個下標表示,比如“從底部數X”。例如,下標-1表示倒數第壹個元素:

& gt& gt& gtL = [12,'中國',19.998]

& gt& gt& gt打印L[-1]

19.998

-4明顯出格。

& gt& gt& gt打印L[-4]

回溯(最近壹次呼叫):

文件" & ltpyshell#2 >,行1,在& lt模塊& gt

打印L[-4]

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

& gt& gt& gt

List通過內置的append()方法添加到尾部,通過insert()方法添加到指定位置(下標從0開始):

& gt& gt& gtL = [12,'中國',19.998]

& gt& gt& gtL.append('傑克')

& gt& gt& gt打印L

[12,'中國',19.998,'傑克']

& gt& gt& gtl .插入(1,3.14)

& gt& gt& gt打印L

[12,3.14,'中國',19.998,'傑克']

& gt& gt& gt

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

& 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] = '美國'

回溯(最近壹次呼叫):

文件" & ltpyshell#21 >,行1,在& lt模塊& gt

t[1] = '美國'

type error:“tuple”對象不支持項分配

也沒有pop、insert和append方法。

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

t =()

或者壹個單元素元組(比如加壹個逗號來防止和聲明壹個整形歧義):

t = (3.14,)

那麽這種類型的元組有什麽用呢?要知道,如果想讓壹個函數返回多個返回值,只需要返回壹個tuple就可以了,因為tuple包含多個值,並且是不可變的(就像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鏡頭(d)

您可以通過鍵值對直接在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['Adam']

95

如果該項不存在,將會報告壹個錯誤:

& gt& gt& gt印刷體d['Jack']

回溯(最近壹次呼叫):

文件" & ltpyshell#40 >,行1,在& lt模塊& gt

印刷體d['Jack']

關鍵錯誤:“傑克”

所以最好在訪問之前檢查壹下密鑰是否存在:

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

現有密鑰

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

& gt& gt& gt打印d.get('Adam ')

95

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

沒有人

至於遍歷壹個dict,其實就是遍歷它的所有鍵的集合,然後用這個鍵獲取對應的值:

& gt& gt& gt對於d中的key:print key,':',d.get(key)

麗莎:85歲

保羅:75

亞當:95

巴特:59

Dict有壹些特點:

搜索速度快。不管是10還是65438+100000,速度都是壹樣的,只是占用內存比較大。而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

{'Bart': 59,' NewList': [12,23,' Jack'],' Adam': 95,' Jone': 99,' Lisa': 85,' Paul': 75}

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

& gt& gt& gt打印d

{'Bart': 59,' NewList': [12,23,' Jack'],' Adam': 95,' Jone': 99,' Lisa': 85,' Paul': 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& gtd1 = { '邁克':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& gtdMerge2 = dict(d1,**d2)

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

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

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

& gt& gt& gtdMerge3 = dict(d1)

& gt& gt& gtdMerge3.update(d2)

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

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

設置

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

& gt& gt& gts =集合(['A ',' B ',' C'])

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

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

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

真實的

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

錯誤的

大小寫很敏感。

它還被遍歷用於:

s = set([('亞當',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

set([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& gts.remove(4)

& gt& gt& gt打印s

集合([1,2,3])

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

& gt& gt& gts =集合([1,2,3])

& gt& gt& gts.remove(4)

回溯(最近壹次呼叫):

文件" & lt標準輸入>,行1,在& lt模塊& gt

關鍵錯誤:4

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

月=集(['壹月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十壹月',])

x1 = 'Feb '

x2 = '太陽'

如果x1月份:

打印“x1:正常”

否則:

打印“x1:錯誤”

如果x2以月為單位:

打印“x2:正常”

否則:

打印“x2:錯誤”

& gt& gt& gt

x1:好的

x2:錯誤