日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python字典类型实现的键值对的映射_python数据类型-映射和集合-字典

發(fā)布時(shí)間:2025/3/20 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python字典类型实现的键值对的映射_python数据类型-映射和集合-字典 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

字典是python語(yǔ)言中唯一的映射類(lèi)型,映射對(duì)象里哈希值(鍵,key)和指向的對(duì)象(值,value)是一對(duì)多的關(guān)系。一個(gè)字典對(duì)象是可變的,是一個(gè)容器類(lèi)型,可存儲(chǔ)任意個(gè)數(shù)的python對(duì)象,其中也可以包括其他容器類(lèi)型。

1.創(chuàng)建字典和給字典賦值

創(chuàng)建字典只需要把字段賦值給一個(gè)變量,不管這個(gè)字典是否包含元素。

1 >>> dict1 ={}2 >>> dict2 = {'name':'earth', 'port':80}

或者使用工廠(chǎng)方法dict()來(lái)創(chuàng)建字典。

1 >>> fdict = dict((['x', 1], ['y', 2]))2 >>>fdict3 {'y': 2, 'x': 1}

另外可使用內(nèi)建方法fromkeys()來(lái)創(chuàng)建一個(gè)"默認(rèn)"字典,字典中元素具有相同的值(如果沒(méi)有給出,默認(rèn)為None)

1 >>> ddict = {}.fromkeys(('x', 'y'), -1)2 >>>ddict3 {'y': -1, 'x': -1}4 >>> edict = {}.fromkeys(('foo', 'bar'))5 >>>edict6 {'foo': None, 'bar': None}

2.訪(fǎng)問(wèn)字典中的值

遍歷一個(gè)字典(一般用鍵),只需要循環(huán)查看它的鍵

1 >>> dict2 = {'name':'foo', 'port':80}2 >>> for key indict2.keys():3 ... print 'key:%s value:%s' %(key, dict2[key])4 ...5 key:name value:foo6 key:port value:80

另外可用迭代訪(fǎng)問(wèn)類(lèi)序列對(duì)象(sequence-like objects),比如字典和文件,只需要用字典的名字就可以在for循環(huán)里遍歷字典。

1 >>> dict2 = {'name':'foo', 'port':80}2 >>> for key indict2:3 ... print 'key:%s value:%s' %(key, dict2[key])4 ...5 key:name value:foo6 key:port value:80

需要得到字典中某個(gè)元素的值,在字典鍵加上中括號(hào)得到。

1 >>> dict2 = {'name':'foo', 'port':80}2 >>> dict2['name']3 'foo'

3.更新字典

有以下方式:添加一個(gè)新數(shù)據(jù)項(xiàng)或新元素(即,一個(gè)鍵-值對(duì));修改一個(gè)已存在的數(shù)據(jù)項(xiàng);刪除一個(gè)已存在的數(shù)據(jù)項(xiàng)。

1 >>> dict2 = {'name':'foo', 'port':80}2 >>> dict2['name'] = 'jone'

3 >>> dict2['arch'] = 6969

4 >>>dict25 {'arch': 6969, 'name': 'jone', 'port': 80}6 >>> del dict2['name']7 >>>dict28 {'arch': 6969, 'port': 80}9 >>>dict2.clear()10 >>>dict211 {}12 >>> deldict213 >>>dict214 Traceback (most recent call last):15 File "", line 1, in

16 NameError: name 'dict2' is notdefined17 >>> dict2 = {'name':'foo', 'port':80}18 >>> dict2.pop('name') #刪除并返回鍵為"name"的條目

19 'foo'

20 >>>dict221 {'port': 80}

4.字典的鍵

不允許一個(gè)鍵對(duì)應(yīng)多個(gè)值:一個(gè)鍵對(duì)應(yīng)多個(gè)值是不允許的(像列表、元組和其它字典這樣的容器是可以的)。當(dāng)有鍵發(fā)生沖突(即字典鍵重復(fù)賦值),取最后的賦值;

鍵必須是可哈希的:所有不可變類(lèi)型都是可哈希的,值相同的數(shù)字表示相同的鍵(例如1和1.0)。

5.映射類(lèi)型操作符

5.1.標(biāo)準(zhǔn)類(lèi)型操作符

=、<、>、and

5.2.字典的鍵查找操作符([])

鍵查找操作符僅用于字典類(lèi)型的操作符,用鍵查詢(xún),鍵是參數(shù)

d[k] = v 通過(guò)鍵"k",給字典中某個(gè)元素賦值"v"

d[k] 通過(guò)鍵"k",查詢(xún)字典中某個(gè)元素的值。

5.3.(鍵)成員關(guān)系操作(in,not in)

類(lèi)似于has_key()方法

1 >>> 'name' indict22 True

6.映射類(lèi)型的內(nèi)建函數(shù)和工廠(chǎng)函數(shù)

6.1.標(biāo)準(zhǔn)類(lèi)型函數(shù)(type()、str()和cmp())

type():對(duì)字典調(diào)用type()工廠(chǎng)方法,返回字典類(lèi)型""

str():返回字典的字符串表示

cmp():首先比較字典的大小,然后是鍵,最后是值。

6.2.映射類(lèi)型相關(guān)函數(shù)

dict():用來(lái)創(chuàng)建字典,如果不提供參數(shù),生成空字典;如果參數(shù)是可迭代的(一個(gè)序列,或一個(gè)迭代器,或一個(gè)支持迭代的對(duì)象),那每個(gè)可迭代的元素必須成對(duì)出現(xiàn)。在每個(gè)值對(duì)中,第一個(gè)元素為字典的鍵,第二個(gè)元素為字典的值。

1 >>>dict()2 {}3 >>> dict([['x', 1], ['y', 2]])4 {'y': 2, 'x': 1}5 >>> dict([('xy'[i-1], i) for i in range(1,3)])6 {'y': 2, 'x': 1}

len():對(duì)字典使用len(),返回所有元素(鍵-值對(duì))的數(shù)目

1 >>> dict2 = {'a':1, 'b':2}2 >>>len(dict2)3 2

hash():判斷某個(gè)對(duì)象是否可以作為一個(gè)字典的鍵,將一個(gè)對(duì)象作為參數(shù)傳遞給hah(),返回這個(gè)對(duì)象的哈希值,只有這個(gè)對(duì)象是可哈希的,才可以作為字典的鍵。

1 >>>hash([])2 Traceback (most recent call last):3 File "", line 1, in

4 TypeError: unhashable type: 'list'

5 >>>hash(())6 3527539

6.3.映射類(lèi)型內(nèi)建方法

keys():返回一個(gè)列表,包含字典中所有的鍵;

values():返回一個(gè)列表,包含字典中所有的值;

items():返回一個(gè)包含所有(鍵-值)元組的列表。

1 sorted():2 {'a': 1, 'c': 2, 'b': 3}3 >>> for ek insorted(dict1):4 ... print 'key:', ek, 'value:', dict1[ek]5 ...6 key: a value: 1

7 key: b value: 3

8 key: c value: 2

update():將一個(gè)字典的內(nèi)容添加到另一個(gè)字典中,字典中原有的鍵如果與新添加的鍵重復(fù),那么重復(fù)鍵所對(duì)應(yīng)的原有條目將被新鍵所對(duì)應(yīng)的值覆蓋。

1 >>>dict12 {'a': 1, 'c': 2, 'b': 3}3 >>> dict2 = {'b':3, 'd':5}4 >>>dict1.update(dict2)5 >>>dict16 {'a': 1, 'c': 2, 'b': 3, 'd': 5}7 >>>

copy():返回一個(gè)字典的副本,淺復(fù)制。

setdefault():檢查字典中是否含有某鍵,如果字典中這個(gè)鍵存在,可以取到它的值,如果鍵在字典中不存在,可以給這個(gè)鍵賦默認(rèn)值并返回此值。

1 >>> mdict = {'host':'zheng', 'port':80}2 >>> mdict.setdefault('prot', 'tcp')3 'tcp'

4 >>> mdict.setdefault('port', '8080')5 80

6 >>>mdict.items()7 [('host', 'zheng'), ('prot', 'tcp'), ('port', 80)]8 >>>

附錄:映射類(lèi)型內(nèi)建方法

方法名字

操作

dict.clear()

刪除字典中所有的元素

dict.copy()

返回字典(淺復(fù)制)的一個(gè)副本

dict.fromkeys(seq, val=None)

創(chuàng)建并返回一個(gè)新字典,以seq中的元素作為該字典的鍵,val作為該字典中所有鍵對(duì)應(yīng)的初始值,如果不提供此值,則默認(rèn)為None

dict.get(key, default=None)

對(duì)字典dict中的鍵key,返回它對(duì)應(yīng)的值value,如果字典中不存在此鍵,則返回default的值(參數(shù)default默認(rèn)為None)

dict.has_key(key)

如果鍵在字典中存在,返回True,否則返回False,等價(jià)于in、not in操作符

dict.items()

返回一個(gè)包含字典中鍵、值對(duì)元組的列表

dict.keys()

返回一個(gè)包含字典中鍵的列表

dict.iter()

方法iteritems()、iterkeys()、itervalues()與它們對(duì)應(yīng)的非迭代方法一樣,不同的是他們返回一個(gè)子迭代,而不是一個(gè)列表

dict.pop(key[, default])

和get()方法類(lèi)似,如果字典中key鍵存在,刪除并返回dict[key],如果key鍵不存在,且沒(méi)有給出default的值,則引發(fā)KeyError異常

dict.setdefault(key, default=None)

和方法set()類(lèi)似,但如果字典中不存在key鍵,則由dict[key]=default為它賦值

dict.update(dict2)

將字典dict2的鍵值對(duì)添加到字典dict

dict.values()

返回一個(gè)包含字典中所有值的列表

總結(jié)

以上是生活随笔為你收集整理的python字典类型实现的键值对的映射_python数据类型-映射和集合-字典的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。