字典原來(lái)是這么回事兒
Python學(xué)習(xí)到現(xiàn)在,我們已經(jīng)知道,如果想將值分組到結(jié)構(gòu)中,并且通過編號(hào)對(duì)其進(jìn)行引用,列表就可以派上用場(chǎng)。不過,今天,我們將學(xué)到一種通過名字引用值的數(shù)據(jù)結(jié)構(gòu),應(yīng)該知道這種數(shù)據(jù)類型叫做映射。字典則是Python中唯一內(nèi)建的映射類型,那么我們就來(lái)學(xué)習(xí)字典。
字典是可變的,并且可以存儲(chǔ)任意數(shù)量的Python對(duì)象。下面這個(gè)例子就是簡(jiǎn)單的字典類型:
1 phonebook={'zhangsan':'12345','lisi':'54321'}2 PRint phonebook
字典由多個(gè)鍵及與其對(duì)應(yīng)的值構(gòu)成的對(duì)組成(我們也把鍵/值對(duì)稱為項(xiàng))。字典中包括很多鍵,每一個(gè)鍵對(duì)應(yīng)一個(gè)值。鍵在字典中是唯一的,但是值不是唯一的。在上例中,名字是鍵,電話號(hào)碼是值。每個(gè)鍵和它的值之間用冒號(hào)(:)隔開,項(xiàng)之間用逗號(hào)(,)隔開,而整個(gè)字典用大括號(hào)括起來(lái)??兆值洌ú话魏雾?xiàng))由兩個(gè)大括號(hào)組成,像這樣:{}。
dict函數(shù):我們可以調(diào)用dict函數(shù)對(duì)其他映射(比如其他字典)或者(鍵,值)這樣的序列或者關(guān)鍵字參數(shù)來(lái)創(chuàng)建字典。
1 item=[('name','BaiYiShaoNian'),('age','23')]2 d=dict(item)3 print d

基本操作
len(d) : 返回字典d中項(xiàng)(鍵-值對(duì))的數(shù)量
d[k] : 返回字典d中鍵k對(duì)應(yīng)的值
d[k]=v :將值v關(guān)聯(lián)到字典d的鍵k上
del d[k] :刪除鍵k的項(xiàng)
k in d : 檢查鍵k是否存在于字典d中
1 d={'name':'BaiYiShaoNian','age':'23','from':'ChongQing','nowAdd':'Jilin'}2 print len(d)3 print d['name']4 d['name']='huangSir'5 print d6 del d['age']7 print d8 print 'from' in d 9 print 'age' in d

小結(jié):在字典中檢查鍵的成員資格比在列表中檢查值的成員資格更加高效,數(shù)據(jù)規(guī)模越大,兩者的查詢效率差別就越大。
字典格式化字符串:我在字符串一篇中有講到字符串的格式化方法,這里,又出現(xiàn)字典格式化字符串了。想想有什么相同之處和不同之處呢,你是不是應(yīng)該試著思考一下?(提示:字典是以映射的方式存在的)
1 d={'name':'BaiYiShaoNian','age':'23','from':'ChongQing'}2 print 'introduce yourself'3 print 'My name is %(name)s , I/'m %(age)s years old , I/'m from %(from)s .' % d

字典方法
clear:清除字典中所有的項(xiàng),無(wú)返回值。(通過下面兩個(gè)例子感受clear方法的特點(diǎn)在哪里)


copy:返回一個(gè)具有相同鍵-值對(duì)的新字典(淺復(fù)制)
deepcopy:深復(fù)制
1 d={'zhangsan':['789','123'],'lisi':'12313'} 2 d2=d.copy() 3 d['zhangsan'].append('999') 4 print d 5 print d2 6 7 from copy import deepcopy 8 d={'zhangsan':['789','123'],'lisi':'12313'} 9 d3=deepcopy(d)10 d['zhangsan'].append('999')11 print d12 print d3

fromkeys:使用給定的鍵建立新的字典,每個(gè)鍵默認(rèn)對(duì)應(yīng)的值為None。
get:一個(gè)更寬松的訪問字典的方法。
一般來(lái)說(shuō),如果正常訪問字典中不存在的鍵的話會(huì)出錯(cuò),那么使用get方法就不會(huì)報(bào)錯(cuò),它返回的是None。
has_key:檢查字典中是否含有給出的鍵。表達(dá)式d.has_key(k)相當(dāng)于k in d。
items和iteritems:items將字典項(xiàng)以列表的形式返回,iteritems和items作用相同,但是它返回的是一個(gè)迭代器對(duì)象而不是列表。
keys和iterkeys:keys方法將字典中的鍵以列表形式返回,iterkeys方法將字典中的值以列表返回
pop:獲得對(duì)應(yīng)于給定鍵的值,并將這個(gè)鍵-值對(duì)從字典中移除
values和itervalues:和keys、iterkeys相對(duì)應(yīng),values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)
總結(jié):目前為止,我們已經(jīng)學(xué)習(xí)到了Python中字符串、元組、列表、字典的基本知識(shí)了,接下來(lái)應(yīng)該怎么學(xué)呢?if 和 while語(yǔ)句嗎?我覺得這些循環(huán)語(yǔ)句可以在今后的Python例子中自然的就學(xué)到了。所以,接下來(lái),我決定繼續(xù)學(xué)習(xí)Python的高級(jí)編程和爬蟲的知識(shí)了。
加油!BaiYiShaoNian。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注