字典構(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ì)改變已有鍵的順序。