本文和大家分享的主要是python開發(fā)中dict與set相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家學(xué)習(xí)和使用這部分內(nèi)容有所幫助。
一. dict的形式
dict={
key:value,
key:value,
key:value,
...
}
(1) dict是集合,用len()可以計(jì)算集合的大小。
(2) dict是用花括號(hào){}表示的,注意與list(用方括號(hào)[]表示)和tuple(用元括號(hào)()表示)的區(qū)別
(3) 最后一對(duì)鍵值末尾可以不加逗號(hào)
注意: 一個(gè) key-value 算一個(gè)長(zhǎng)度
二. 訪問(wèn)dict
(1)方法一
1.方式:
通過(guò) key 訪問(wèn) dict 的value。
2.舉例:
>>> d = {
... 'Adam': 95,
... 'Lisa': 85,
... 'Bart': 59
... }
>>> print d['Adam']
95
3.注意:
key是否正確,如不正確則會(huì)報(bào)錯(cuò):NameError
解決方法:
if 'Paul' in d:
... print d['Paul']
...
>>>
如果 ‘Paul’ 不存在,if語(yǔ)句判斷為False,自然不會(huì)執(zhí)行 print d[‘Paul’] ,從而避免了錯(cuò)誤。
(2)方法二
1.方式:
dict.get(key),key存在返回value,否則返回None
2.舉例:
>>> print d.get('Bart')
59
>>> print d.get('Paul')
None
三.dict的特點(diǎn)
(1) 速度快
無(wú)論dict有10個(gè)元素還是10萬(wàn)個(gè)元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降。
缺點(diǎn):占用內(nèi)存大
(2) 無(wú)序
存儲(chǔ)的key-value序?qū)κ菦](méi)有順序的!這和list不一樣.
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
打印時(shí):
>>> print d
打印的順序不一定是我們創(chuàng)建時(shí)的順序,而且,不同的機(jī)器打印的順序都可能不同,這說(shuō)明dict內(nèi)部是 無(wú)序 的,不能用dict存儲(chǔ)有序的集合。
(3) 元素不可變
作為 key 的元素必須不可變,value是否可變無(wú)所謂。
list是可變的,就不能作為 key。
{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True
# key 是 tuple,并且tuple的每個(gè)元素都是不可變對(duì)象,value是 boolean
}
注: 一般key用字符串表示,因?yàn)橛闷饋?lái)方便.
(4) key是唯一的
dict的作用是建立一組 key 和一組 value 的映射關(guān)系,則dict的key是不能重復(fù)的。
四.dict的更新
方式:
通過(guò)dict[key]=value
原因:dict是 可變的
舉例:
>>> d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
>>> d['Paul'] = 72 #通過(guò)dict[key]=value
>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}
注意:如果 key 已經(jīng)存在,則賦值會(huì)用新的 value 替換掉原來(lái)的 value
五.dict的遍歷
方式:
for key in dict的方式
舉例:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
... print key
...
Lisa
Adam
Bart
六. set
為什么要用set:
有的時(shí)候,我們只想要 dict 的 key,不關(guān)心 key 對(duì)應(yīng)的 value,目的就是保證這個(gè)集合的元素不會(huì)重復(fù),這時(shí),set就派上用場(chǎng)了。
set 持有一系列元素,這一點(diǎn)和 list 很像,但是set的元素沒(méi)有重復(fù),而且是無(wú)序的,這點(diǎn)和 dict 的 key很像。
set的適用場(chǎng)合:
判斷是否存在
(1)set的創(chuàng)建
方式:調(diào)用 set() 并傳入一個(gè) list,list的元素將作為set的元素
>>> s = set(['A', 'B', 'C'])
>>> print s
set(['A', 'C', 'B'])
注意:set內(nèi)部存儲(chǔ)的元素是無(wú)序的。
(2)set的特點(diǎn)
1.set不能包含重復(fù)的元素
>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3
結(jié)果顯示,set會(huì)自動(dòng)去掉重復(fù)的元素,原來(lái)的list有4個(gè)元素,但set只有3個(gè)元素。
2.不存儲(chǔ)value
判斷一個(gè)元素是否在set中速度很快。
3.key不可變
4.無(wú)序
(3)set的訪問(wèn)
因?yàn)?/span>set存儲(chǔ)的是無(wú)序集合,所以我們只能判斷一個(gè)元素是否在set中。
>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
>>> 'Bart' in s
True
>>> 'Bill' in s
False
(4)set的遍歷
方式:通過(guò) for 循環(huán)實(shí)現(xiàn)。
>>> s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
... print name
...
Lisa
Adam
Bart
(5)set的更新
1.添加:set的add()方法
>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])
注意:如果添加的元素已經(jīng)存在于set中,add()不會(huì)報(bào)錯(cuò),但是不會(huì)加進(jìn)去
2.刪除:set的remove()方法
>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])
如果刪除的元素不存在set中,remove()會(huì)報(bào)錯(cuò)
用add()可以直接添加,而remove()前需要判斷。
來(lái)源:簡(jiǎn)書