第7章 映像和集合型別

2021-05-28 17:32:37 字數 2211 閱讀 1190

7.1 對映型別:字典

字典是python語言中唯一的對映型別。

乙個字典物件是可變的,它是乙個容器型別,能儲存任意個數的python物件,其中也包括其他容器型別。

字典型別和序列型別容器類的區別是儲存和訪問資料的方式不同。序列型別只用數字型別的鍵。對映型別也可以用其他物件型別做鍵,一般常見的是用字串做鍵。和序列型別的鍵不同,映像型別的鍵直接或間接地和儲存的資料值相關聯。

映像型別中的資料是無序排列的。

對映型別通常被稱做雜湊表,是因為字典物件就是雜湊型別的。

你所能獲得的有序集合只能是字典中的鍵的集合或值的集合。方法keys()或values()返回乙個列表,該列表是可排序的。你還可以用items()方法得到包含鍵、值對的元組的列表來排序。由於字典本身是雜湊的,所以是無序的。

多條字典條目被包含在大括號({})裡。

7.1.1 如何建立字典和給字典賦值

可以用工廠方法dict()來建立字典,也可以用乙個很方便的內建方法fromkeys()來建立乙個"預設"字典。

>>> dict1 = dict((("1th", "runrun"),("2th", "jing"), ("3th", "qing")))

>>> dict1["1th"]

'runrun'

>>> dict2 = {}.fromkeys(("address", "hometown"),"yantai")

>>> dict2["address"]

'yantai'

>>> 

7.1.2 如何訪問字典中的值

可以用keys()方法獲取供迴圈使用的鍵值列表,也可以用迭代器來輕鬆訪問類序列物件,比如字典和檔案。

>>> for key in dict1.keys():

... print key, dict1[key]

...

3th qing

2th jing

1th runrun

>>> for key in dict2:

... print key, dict2[key]

...

hometown yantai

address yantai

>>> 

檢查乙個字典中是否用某個鍵的最好方法是用字典的has_key()方法,或者另一種比較好的方法in或not in操作符。

在執行中字典中的鍵不允許被改變,字典中的鍵必須是可雜湊的,所以數字和字串和以作為字典中的鍵,但是列表和其他字典不行。

>>> dict1.has_key("4th")

false

>>> "address" in dict2

true

>>> 

7.1.3 如何更新字典

幾種方式對乙個字典做修改:1)新增乙個新資料項或新元素, 2)修改乙個已存在的資料項, 3)刪除乙個已存在的資料項。

>>> print "1th:%(1th)s 2th:%(2th)s 3th:%(3th)s"%dict1

1th:runrun 2th:jing 3th:qing

>>> 

如果字典中該鍵已經存在,則字典中該鍵對應的值將被新值替代,上面的print語句展示了另一種在字典中使用字串格式符(%)的方法。也可以用內建方法update()將整個字典的內容新增到另乙個字典。

7.1.4 如何刪除字典元素和字典

del語句

>>> del dict2["hometown"]

>>> dict2

>>> del dict1

>>> dict1

traceback (most recent call last):

file "", line 1, in

nameerror: name 'dict1' is not defined

>>> 

7.2 對映型別操作符

字典不支援像拼接和重複這樣的操作。

7.2.1 標準型別操作符

與列表,元組類似

7.2.2 對映型別操作符

1. 字典的鍵查詢操作符()

鍵查詢操作符既可以用於給字典賦值,也可以用於從字典中取值。

2. 鍵成員關係操作(in、not in)

用in和not in操作符來檢查某個鍵是否存在於字典中。

7.3 對映型別的內建函式和工廠函式

7.3.1 標準型別函式[type()、str()和cmp()]

字典通過這樣的演算法來比較的:首先是字典的大小,然後是鍵,最後是值。

第7章 映像和集合型別 3

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

Python核心程式設計 映像和集合型別

對映型別物件裡雜湊值 鍵,key 和指向的物件 值,value 是一對多的關係。dict1 dict1 dict2 dict1,dict2 fdict dict x 1 y 2 traceback most recent call last file line 1,in typeerror dict...

第3章 字典和集合

dicti型別在各種程式中得到廣泛應用,模組的命名空間 例項的屬性和函式的關鍵字引數中都可以看到欄位的身影。跟它有關的內建函式都在 builtins dict 模組中。python對dict的實現做了高度優化,而雜湊表是字典型別效能出眾的根本原因。集合 set 的實現其實也依賴於雜湊表。想要進一步理...