第3章 字典和集合

2021-08-14 06:28:03 字數 2473 閱讀 2298

dicti型別在各種程式中得到廣泛應用,模組的命名空間、例項的屬性和函式的關鍵字引數中都可以看到欄位的身影。跟它有關的內建函式都在__builtins__.__dict__模組中。

python對dict的實現做了高度優化,而雜湊表是字典型別效能出眾的根本原因。集合(set)的實現其實也依賴於雜湊表。想要進一步理解集合和字典,就得先理解雜湊表的原理。

3.1 泛對映型別

3.2 字典推導

#字典推導應用

>>> dial_codes = [

(91, 'india'),

(1, 'united states'),

(62, 'indonesia'),

(7, 'russia'),

(81, 'japan'),

]>>> country_code =

>>> country_code

>>>

3.3 常見的對映方法

常見的對映方法,這裡就不一一列出。

用setdefault處理找不到的鍵

3.4 對映的彈性鍵查詢

如果某個鍵在對映裡不存在,可以通過以下兩種方式通過這個鍵讀取得到乙個預設值。

3.5 欄位的變種

省略3.6 子類化userdict

省略3.7 不可變對映型別

省略3.8 集合論

集合的本質是許多唯一物件的聚集。因此,可以去重。它的特點就是以空間換時間,耗記憶體,易查詢,使用頻率低。這些特點歸功於它背後的雜湊表。

>>> l = ['spam','spam','eggs','spam']

>>> l

['spam', 'spam', 'eggs', 'spam']

>>> set(l)

>>> list(set(l))

['spam', 'eggs']

注意:如果要建立乙個空集,需使用不帶引數的set()方法。如果只是寫成{}的形式,那建立的是個空字典。

集合推導

>>> from unicodedata import name

>>>

集合的操作:

(1)數**算

python

方法

描述

s & z

s.__and__(z)

s和z的交集

s | z

s.__or__(z)

s和z的並集

s - z

s.__sub__(z)

s和z的差集

s ^ z

s.__xor__(z)

s和z的對稱差集

(2)比較運算

python運算子

方法

描述

e in s

s.__contains__(e)

元素e是否屬於s

s <= z

s.__le__(z)

s是否為z的子集

s < z 

s.__lt__(z)

s是否為z的真子集

s >= z

s.__ge__(z)

s是否為z的父集

s > z

s.__gt__(z)

s是否為z的真父集

(3)其他方法

方法

set

frozenset

描述

s.add(e)

*

把元素e新增到s中

s.clear()

*

移除掉s中的所有元素

s.copy()

*

*

對s淺複製

s.discard(e)

*

如果s裡有e這個元素的話,把它移除

s.__iter__()

*

*

返回s的迭代器

s.__len__()

*

*

len(s)

s.pop()

*

從s中移除乙個元素並返回它的值,若s為空,則丟擲keyerror異常

s.remove(e)

*

從s中移除e元素,若e元素不存在,則丟擲keyerror異常

3.9 dict和set的背後

python用雜湊表實現dict和set的,具體如何實現這裡就不一一展開。

特點:

3.10 本章小結

第7章 映像和集合型別 3

7.6 集合型別 集合物件是一組無序排列的可雜湊的值。集合成員可以做字典中的鍵。集合支援in和not in操作符檢查成員,由len 內建函式得到集合的基數,用for迴圈迭代集合的成員。但因為集合本身是無序的,所以不可以為集合建立索引或執行切片操作,也沒有鍵可用來獲取集合中元素的值。集合有兩種不同的型...

字典和集合

字典 dict 字典 dict是一種無序的可變容器,序列的索引對它失效,它的索引是自定義的 形式 d d d dict a 1,b 2 d dict name libai age 30 d dict.fromkeys 迭代物件 將乙個迭代物件的每個元素作為鍵,值預設全部為none 字典方法 例 d ...

集合和字典

二 字典 dictionary 定義 1.建立格式 par 或者set value 向集合中新增元素 s.add a a 如果a已經存在,不進行任何操作 或者s.update a a可以是列表,元組,字典等。a 可以是多個,用逗號隔開。2.移除元素 s.remove a 將a從集合中移除出去,如果元...