字典是鍵/值對(duì)構(gòu)成的集合,字典通過(guò)大括號(hào)來(lái)創(chuàng)建,字典的鍵是字符串,而值可以是任何數(shù)據(jù)對(duì)象。
字典有兩個(gè)重要的特征:
- 字典是無(wú)序的,字典項(xiàng)沒(méi)有特定的順序,只能通過(guò)鍵來(lái)獲取值;
- 字典是可變的,支持原處修改鍵的值;
- 字典是作為散列表來(lái)實(shí)現(xiàn)的,可增長(zhǎng),搜索非常快速;
- 和列表一樣,字典存儲(chǔ)的是對(duì)象的引用,不是拷貝。
創(chuàng)建字典
創(chuàng)建空的字典:
>>> d={}
創(chuàng)建包含兩個(gè)項(xiàng)目的字典:
>>> d={'name':'vic','age':28}
創(chuàng)建包含嵌套類型的字典:
>>> d={'student':{'name':'vic','age':28}}
通過(guò)dict函數(shù)來(lái)創(chuàng)建字典:
>>> d=dict(name='vic',age=28) >>> d {'name': 'vic', 'age': 28}
字典解析
使用字典解析,可以使用迭代器來(lái)生成字典:
>>> d={x:x**2 for x in range(0,5)} >>> d {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
引用字典的值
通過(guò)鍵來(lái)引用字典的值
>>> d['name'] 'vic' >>> d['age'] 28
或者使用dict.get(key, default)來(lái)獲取鍵對(duì)應(yīng)的值,其中default參數(shù)的作用是:當(dāng)不存在鍵時(shí),返回default作為該鍵的值:
>>> d.get('name') 'vic' >>> d.get('nam','jim') 'jim'
字典操作
字典的基本操作有:
- len(dict):字典項(xiàng)的數(shù)量,或者字典鍵的數(shù)量
- dict.keys():所有字典鍵的集合
- dict.values():所有字典值得集合
- dict.items():字典項(xiàng)(鍵/值對(duì))的集合
- list(dict.keys()):把所有字典鍵轉(zhuǎn)換為列表
- list(dict.values()):把所有字典鍵的值轉(zhuǎn)換為列表
- d[key],d.get(key):根據(jù)字典的鍵獲取值
- key in dict:檢查該key是否是字典的鍵
1,添加/修改字典項(xiàng)
如果字典中不存在Key,那么添加該Key/Value對(duì);如果存在該Key,那么修改該Key的值。
>>> d=dict(name='vic',age=28) >>> d['sex']='male' {'name': 'vic', 'age': 28, 'sex': 'male'} >>> >>> d['sex']='man' {'name': 'vic', 'age': 28, 'sex': 'man'}
2,刪除字典項(xiàng)
dict.pop(key) 用于刪除鍵為key的字典項(xiàng)
>>> d.pop('sex') 'man' >>> d {'name': 'vic', 'age': 28}
或者使用 del dict[key]來(lái)刪除鍵為key的字典項(xiàng):
>>> del d['sex']
3,合并字典
dict.update(dict2),把字典dict2合并到dict中
>>> d.update({'tel':'120'}) {'name': 'vic', 'age': 28, 'tel': '120'}
4,復(fù)制字典
dict.copy()獲得字典的一個(gè)深拷貝(deep copy)對(duì)象,深拷貝就是增加一個(gè)指針并且申請(qǐng)一個(gè)新的內(nèi)存,使這個(gè)增加的指針指向這個(gè)新的內(nèi)存。
dict2=dict:獲得字典的一個(gè)淺拷貝(shallow copy)對(duì)象,淺拷貝只是增加了一個(gè)指針指向已經(jīng)存在的內(nèi)存。
例如,深拷貝對(duì)象和原對(duì)象,指向不同的內(nèi)存空間,修改任意一個(gè)字典,不會(huì)影響另外一個(gè)字典:
>>> d=dict(name='vic',age=28) >>> dc=d.copy() # deep copy >>> dc['tel']=120 >>> d {'name': 'vic', 'age': 28} >>> dc {'name': 'vic', 'age': 28, 'tel': 120}
而淺拷貝對(duì)象和原對(duì)象指向相同的內(nèi)存空間,修改任意一個(gè)字典,另一個(gè)字典也會(huì)修改:
>>> d=dict(name='vic',age=28) >>> sc=d # shallow copy >>> sc['tel']=110 >>> sc {'name': 'vic', 'age': 28, 'tel': 110} >>> d {'name': 'vic', 'age': 28, 'tel': 110}
?
參考文檔:
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
