從零開始的Python計劃#5.2 【字典】

字典

字典是存儲數據集合的對象
字典的每個元素都由兩部分組成,每個元素都包含一個鍵和一個值
通常,字典被稱爲鍵到值的映射因爲我們存儲在字典中的每個值都會有一個分配的鍵(每次我們開始增值,我們都有一個鍵),
鍵必須是一個不變的對象鍵可以是你想要的任何鍵,但它必須是不變的(和元組的特徵一樣)
要檢索特定值,請使用與其關聯的鍵,與列表不同,與其使用索引從字典中獲取值,不如使用其鍵。(調用鍵,然後我們將獲得該值)
字典中的元素是無序存儲的在字典中元素是按隨機順序存儲的。(因爲字典知道當我們使用鍵來調用值,它將使用鍵來搜索值並將其返回給我們,因此順序並不重要)

創建字典的格式是字典的名稱和花括號{}
在裏面要用逗號’ , ’ 隔開元素
在這裏插入圖片描述
元組對應(),列表使用[] ,字典則用{}

1·序列與字典的比較

一·
按順序將元素添加到序列中的順序進行存儲
當我們將元素存儲在列表中時,列表會記住它們存儲在什麼位置。
在這裏插入圖片描述

在這裏插入圖片描述這就是列表的重點,列表採用我們存儲在其中的值,併爲其分配索引。,索引就是我們調用值的方式。
然而,字典值不會以任何特定順序存儲,繼續使用上面的例子:在這裏插入圖片描述

在這裏插入圖片描述創建字典並存儲了三個元素,一旦我們創建了,Python就會將字典中的項重新排列並按順序排列,在這種情況下,將按鍵的大小順序排列(因爲這種情況下,鍵是整數,它按照大小順序排序它們)
將序列元素的索引用作鍵我們可以將位置的索引號視爲鍵,在字典中,鍵是明確分配的****(因此,我們可以自己確定字典中一組元素的鍵是什麼)。

2·從字典中檢索值

從字典中檢索值的一般格式是:dictionary[key]
**如果鍵在字典中,則返回關聯的值,否則將引發KeyError異常**與列表相似,當我們使用不存在的索引時,我們將返回與字典相同的錯誤

id_name = {123:'Chris', 125:'Katie', 120:'John'}
print(id_name[120])
#得出結果:
John

print(id_name[130])#130就是字典中不存在的鍵
#得出結果:
Traceback (most recent call last):
 File "<pyshell#2>", line 1, in <module>
  id_name[130]
 KeyError: 130

使用in和not in運算符測試鍵是否在字典中
使用in和not in 在嘗試採用元素之前進行檢查,有助於防止KeyErrors鍵錯誤。在這裏插入圖片描述
用if語句來檢查字典中是否有這個鍵,如果該語句是正確的,我會得到打印的語句,如果是錯誤的,則if語句會忽略其中的代碼語句,並且我們不會收到任何錯誤

3·向現有字典添加元素

字典是可變對象,添加新的鍵值對格式:dictionary[key] = value
如果字典中存在鍵,則與之關聯的值將被更改(因爲字典是可變的,我可以使用現有鍵併爲其分配新的值)

id_name = {123:'Chris', 125:'Katie', 120:'John'} 
id_name[125]='Robert'
print(id_name)
#輸出結果:
{123: 'Chris', 125: 'Robert', 120: 'John'}

id_name[133]='Paul'#這是字典中不存在的鍵和值
print(id_name)
#輸出結果:
{123: 'Chris', 125: 'Robert', 120: 'John', 133: 'Paul'}

字典則將添加133(‘Paul’字典將採用鍵和值對並添加到現有元素列表中)
要刪除鍵值對,格式:del dictionary[key]鍵和Python將對元素的結尾進行鍵搜索,將其分配給該鍵並從字典中刪除(如果鍵不在字典中,那麼我們會收到KeyError)

4·獲取元素數並混合數據類型

len函數:用於獲取字典中的元素數
就像在列表中使用一樣:在這裏插入圖片描述
len(id_name)這將獲取字典內元素的數量4
存儲在單個字典中的值可以是不同類型的在這裏插入圖片描述

5·字典鍵的屬性

字典鍵的某些屬性對於理解字典的功能非常重要。
鍵必須是不可變的對象,但關聯的值可以是任何類型的對象,
一個字典可以包含幾種不同的不可變類型的鍵。
鍵值應該是唯一的。如果在賦值過程中遇到重複的鍵,則以最後一個分配爲準

record = {'name':'John', 'id':3245, 'age':33,'name':'Robert'} 
print(record['name'])
#輸出結果:
Robert

字典不允許鍵有相同的名字,相同的值(所以後面的’name’:‘Robert’將頂替前面有相同內容的鍵值對’name’:‘John’)要確保我們的字典中的每個值都有唯一的鍵。

一些操作字典的方法

(1)clear方法:刪除字典中的所有元素,使其爲空
有時可能我們會有個暫時的字典,用它來儲存一些暫時的數據,當到達某個特定編程點時,我們會需要清除字典中的數據,併爲下一輪存儲數據做好準備,這時候就需要用到clear方法。
格式:dictionary.clear()

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
id_name.clear()
print(id_name)
#輸出結果:
{}

(2)get方法:從字典中獲取與指定鍵關聯的值
get用於獲取字典的特定值
格式:dictionary.get(key,default)
default是默認參數,如果找不到鍵,則返回默認值。

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
print(id_name.get(125, "Key not found in the dictionary"))
#輸出結果:
Robert

print(id_name.get(129, "Key not found in the dictionary"))
#輸出結果:
'Key not found in the dictionary‘

這會把字典拿走,找到125,再返還Robert。在這種情況下,作爲默認設置,設置了"Key not found in the dictionary"。如果字典中沒有任何鍵爲129的內容,可以自動設置消息或者設置我想要的值。可以返回任何想要的東西,以防字典裏沒有我要找的鍵。
可以替代[]運算符,並且無法引發KeyError異常

(3)keys方法:將所有字典鍵作爲序列返回
假設它是否用於調試,想看看字典裏有什麼或者需要根據字典的鍵創建一個列表,就可以使用keys方法。會把所有的鍵都放在字典裏。
格式:dictionary.keys()

(4)pop方法:返回與指定鍵關聯的值,並從字典中刪除該鍵值對
取出鍵與鍵關聯的值,並返回它,但它保持值不變。
格式:dictionary.pop(key,default)
default是默認設置,未找到鍵時返回默認值,和上面示例一樣。

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
id_name.pop(120, "Key not found")
'John'
print(id_name)

#輸出結果:
{123: 'Chris', 125: 'Robert', 133: 'Paul'}

因爲,pop從字典中刪除了元素,如果打印,pop的值被刪除。

(5)values方法:將所有字典值作爲序列返回
返還所有字典的賦值爲一個序列
格式:dictionary.values() 它可以遍歷使用for循環。

(6)items方法:返回字典的所有鍵和相關值,作爲一種稱爲字典視圖的特殊序列類型
這是與字典相關的最具體的方法之一,它以特殊格式返回一切–字典視圖。
格式:dictionary.items() 它可以遍歷使用for循環。

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
for key, value in id_name.items():
    print(key, value)
#輸出結果:
120 John
123 Chris
125 Robert
133 Paul

可以使用for循環來迭代,items方法將返回迭代的鍵值。字典視圖由兩個元素組成:鍵和值。

使用for循環遍歷字典

字典也很適用於循環
一般格式:在這裏插入圖片描述
每次循環迭代時,var都被分配一個鍵

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
for var in id_name: 
 	print(var)
#輸出結果:
120
123
125
133

for var in id_name: 
    print(id_name[var])#打印字典中的變量
    
#輸出結果:
John
Chris
Robert
Paul

列表,元組,字典,循環,它們組合在一起會變成非常強大的計算和編程技能,雖然有一點點複雜,但是還是希望能夠耐心看完www

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章