python內(nèi)置序列二——字典和集合

字典構(gòu)造方法


字典推導(dǎo)

可以從任何以鍵值對(duì)作為元素的可迭代對(duì)象中構(gòu)建出字典

例:

DIAL_CODES=[(86,'China'),(91,'India')...]

contry_code = {country:code for code, country in DIAL_CODES}

用setdefault處理找不到的鍵

my_dict.setdefault(key, []).append(new_value)相當(dāng)于

if key not in my_dict:

? ? my_dict[key] = []

my_dict[key].append(new_value)

映射的彈性鍵查詢

defaultdict:處理找不到的鍵的一個(gè)選擇

比如,我們新建了這樣一個(gè)字典:dd=defaultdict(list),如果鍵"new-key"在dd中還不存在的話,表達(dá)式dd['new-key']會(huì)按照以下的步驟來行事:

1、調(diào)用list()來建立一個(gè)新列表

2、把這個(gè)新列表作為值,'new-key'作為它的鍵,放到dd中。

3、返回這個(gè)列表的引用

集合論

集合的本質(zhì)是許多唯一對(duì)象的聚集,因此,集合可以用于去重。

除了保證唯一性,集合還實(shí)現(xiàn)了許多基礎(chǔ)的中綴運(yùn)算符。給定兩個(gè)集合a和b,a|b返回的是它們的合集,a&b返回的是它們的交集,而a-b得到的是差值。

dict的實(shí)現(xiàn)及其導(dǎo)致的結(jié)果

1、鍵必須是可散列的

一個(gè)可散列的的對(duì)象必須滿足以下要求:

(1)支持hash()函數(shù),并且通過__hash__()方法所得到的散列值是不變的。

(2)支持通過__eq__()方法來檢測(cè)相等性。

(3)若a==b為真,則hash(a) == hash(b)也為真

2、字典在內(nèi)存上的開銷巨大。

3、鍵查詢很快。

4、鍵的次序取決于添加順序。

5、往字典里添加新鍵可能會(huì)改變已有鍵的順序。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容