python基礎(三)字典

2021-09-11 08:16:35 字數 3118 閱讀 6319

1.字典的用途

字典的名稱指出了這種資料結構的用途。普通圖書適合按從頭到尾的順序閱讀,如果你願意,可快速翻到任何一頁,這有點像python中的列表。字典(日常生活中的字典和python字典)旨在讓你能夠輕鬆地找到特定的單詞(鍵),以獲悉其定義(值)。

在很多情況下,使用字典都比使用列表更合適。下面是python字典的一些用途:

字典特點

字典的鍵不能修改且唯一;因此字典的鍵不能是列表和字典

字典具有無序性,通過鍵去替代索引

假設有如下名單:

>>> names = ['alice', 'beth', 'cecil', 'dee-dee', 'earl'] 

如果要建立乙個小型資料庫,在其中儲存這些人的**號碼,該如何辦呢?一種辦法是再建立乙個列表。假設只儲存四位的分機號,這個列表將類似於:

>>> numbers = ['2341', '9102', '3158', '0142', '5551'] 

建立這些列表後,就可像下面這樣查詢cecil的**號碼:

>>> numbers[names.index('cecil')] 

'3158' 

這可行,但不太實用。實際上,你希望能夠像下面這樣做:

>>> phonebook['cecil'] 

'3158' 

如何達成這個目標呢?只要phonebook是個字典就行了。

2.建立和使用字典

字典以類似於下面的方式表示:

phonebook =  

字典由鍵及其相應的值組成,這種鍵值對稱為項(item)。在前面的示例中,鍵為名字,而值為**號碼。每個鍵與其值之間都用冒號(:)分隔,項之間用逗號分隔,而整個字典放在花括號內。空字典(沒有任何項)用兩個花括號表示,類似於下面這樣:{}。

在字典(以及其他對映型別)中,鍵必須是獨一無二的,而字典中的值無需如此。

1)函式 dict

可使用函式dict從其他對映(如其他字典)或鍵-值對序列建立字典。

>>> items = [('name', 'gumby'), ('age', 42)] 

>>> d = dict(items) 

>>> d 

>>> d['name'] 

'gumby' 

還可使用關鍵字實參來呼叫這個函式,如下所示:

>>> d = dict(name='gumby', age=42) 

>>> d 

儘管這可能是函式dict最常見的用法,但也可使用乙個對映實參來呼叫它,這將建立乙個字典,其中包含指定對映中的所有項。像函式list、tuple和str一樣,如果呼叫這個函式時沒有提供任何實參,將返回乙個空字典。從對映建立字典時,如果該對映也是字典(畢竟字典是python中唯一的內建對映型別),可不使用函式dict,而是使用字典方法copy。與list、tuple和str一樣,dict其實根本就不是函式,而是乙個類。

x = dict('a'=1,'b'=2) 入參為乙個元組,類似 a = 1的鍵值對

x = dict((('a',1)('b',1))) 入參為乙個元組,元組內部是一系列包含兩個值的元組,例如(("a", "1"), ("b", "2"))

x = dict((['a',1],['b',1])) 入參為乙個元組,元組內部是一系列包含兩個值的列表,例如(["a", "1"], ["b", "2"])

x = dict([('a',1),('b',2)]) 入參為乙個列表,列表內部是一系列包含兩個值的元組,例如[("a", "1"),("b", "2")]

x = dict([["a", "1"],["b", "2"]]) 入參為乙個列表,列表內部是一系列包含兩個值的列表,例如[["a", "1"],["b", "2"]]

.fromkeys方法建立字典

dict.fromkeys(('a','b'),1) 第乙個引數是乙個列表或者元組,裡邊的值為key,第二個引數是所有key的value值

2)基本的字典操作

字典的基本行為在很多方面都類似於序列。

雖然字典和列表有多個相同之處,但也有一些重要的不同之處。

相比於檢查列表是否包含指定的值,檢查字典是否包含指定的鍵的效率更高。資料結構越大,效率差距就越大。

前述第一點(鍵可以是任何不可變的型別)是字典的主要優點。第二點也很重要,下面的示例說明了這種差別:

>>> x =  

>>> x[42] = 'foobar' 

traceback (most recent call last): 

file "", line 1, in ? 

indexerror: list assignment index out of range 

>>> x = {} 

>>> x[42] = 'foobar' 

>>> x 

首先,我嘗試將字串'foobar'賦給乙個空列表中索引為42的元素。這顯然不可能,因為沒有這樣的元素。要讓這種操作可行,初始化x時,必須使用[none] * 43之類的**,而不能使用。這次我將'foobar'賦給乙個空字典的鍵42;這樣做一點問題都沒有:在這個字典中新增了乙個新項。

3)將字串格式設定功能用於字典

可使用字串格式設定功能來設定值的格式,這些值是作為命名或非命名引數提供給方法format的。在有些情況下,通過在字典中儲存一系列命名的值,可讓格式設定更容易些。例如,可在字典中包含各種資訊,這樣只需在格式字串中提取所需的資訊即可。為此,必須使用format_map來指出你將通過乙個對映來提供所需的資訊。

>>> phonebook 

>>> "cecil's phone number is .".format_map(phonebook) 

"cecil's phone number is 3258." 

像這樣使用字典時,可指定任意數量的轉換說明符,條件是所有的欄位名都是包含在字典中的鍵。在模板系統中,這種字串格式設定方式很有用(下面的示例使用的是html)。

>>> template = '''

......

...

...

''' 

>>> data =  

>>> print(template.format_map(data)) 

welcome to my home page!

Python基礎 三 字典

字典的格式my dict 定義乙個字典 my dict1 定義乙個空字典 my dict2 dict 定義乙個空字典1.新增元素my dict my dict gender male 此時為新增,將新增到my dict字典中2.修改元素my dict my dict age 121 此時為修改,將 ...

python學習筆記 三 字典

字典是一種對映型別的資料型別。辣麼什麼是對映呢?如果看過 資料結構與演算法 這一本書的小夥伴應該有印象 我也只是大學學習過,嘻嘻 對映 就是將兩個集合一 一對應起來,通過集合a的值,集合b有且只有乙個與之對應。字典是python中唯一的內建對映型別。字典以類似於下面的方式表示 phonebook 字...

(三)字典和集合

一 泛對映型別 1 標準庫里的對映型別都是dict來實現的,它們有個共同的限制,只有可雜湊的資料才能作為對映裡的鍵 2 如果乙個物件是可雜湊的,那麼在這個物件的生命週期中,它的雜湊值是不變的。並且這個物件需要實現 hash 方法,包含 qe 方法。原子不可變資料型別 str,bytes和數值型別 都...