在這一講中,你將學習如何能夠將相關信息關聯起來的Python字典。學習如何能夠訪問和修改字典中的信息。在一個字典中存儲多少信息量都是可以的。所以我們要學習如何遍歷字典中的數據。
到底什麼才是字典呢?
可以這麼理解,字典就是存儲一個物體多個信息的集合體。如果這是一個表示人的字典,你在其中就可以存儲他的姓名、年齡、地址、職業等信息。
在這一講中,你將學習:
- 如何定義字典,
- 如何使用存儲在字典中的信息;
- 如何訪問和修改字典中的元素,
- 如何遍歷字典中的所有信息;
- 如何遍歷字典中所有的鍵-值對、所 有的鍵和所有的值;
- 如何在列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典
5.1一個簡單的字典
<code>person = {'name'
:'qimu'
,'age'
: 18}'name'
])'age'
])/<code>
這是一個名為person的字典
字典使用花括號來標識,其中name和age表示鍵(key),qimu和18表示值(value),鍵和值組成鍵-值對。
5.2使用字典
在Python中,字典是一系列鍵-值對。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的可以是數字、字符串、列表、乃至字典。
需要訪問字典中的值時,需要用遵循的語法:字典名['鍵名'],例如上圖的person['name']。
字典是一種動態結構,你可以隨時在其中添加鍵-值對。要添加鍵-值對,你可以依次指定字典名、用方括號括起的鍵和相關聯的值。
<code>person = {'name'
:'qimu'
,'age'
: 18}'location'
] ='China'
'name'
:'qimu'
,'age'
: 18} {'name'
:'qimu'
,'age'
: 18,'location'
:'China'
}/<code>
這裡演示了在字典person中添加了一個location的鍵-值對
你也可以先創建一個空的字典,然後才將需要的數據添加進去。
如果想要修改鍵所對應的值應該怎麼辦呢?
其實方法和添加鍵-值對一樣,依次指定字典名、用方括號括起的鍵和相關聯的值,只不過這裡的鍵是你想要改變的值所對應的鍵。
<code>person = {'name'
:'qimu'
,'age'
: 18}'age'
] = 20'name'
:'qimu'
,'age'
: 18} {'name'
:'qimu'
,'age'
: 20}/<code>
你可以發現這裡age對應的值已經改變
對於字典中不需要的值我們可以進行刪除,只需要用到del語句。
假如我們現在想刪除字典person中的鍵age和其所對應的值。
<code>person = {'name'
:'qimu'
,'age'
:18
} print(person)del
person['age'
] print(person) {'name'
:'qimu'
,'age'
:18
} {'name'
:'qimu'
}/<code>
這裡顯示已經刪除了age
5.3遍歷字典
一個字典可能只包含幾個鍵-值對,也可能包含成千上萬個鍵-值對。字典可以以各種方式存儲信息,因此有多種遍歷字典的方式。
遍歷所有的鍵-值對
要想遍歷鍵-值對,可以用for循環。要編寫用於遍歷字典的for循環,可聲明兩個變量,用於存儲鍵-值對中的鍵和值。對於這兩個變量,可使用任何名稱。
for語句的第二部分包含字典名和一個方法items(),它返回一個鍵-值對列表。
<code>person = {'name'
:'qimu'
,'age'
: 18}for
key, valuein
person.items():"\nKey:"
+ key)"Value:"
+ str(value)) Key:name Value:qimu Key:age Value:18/<code>
我在這裡使用key和value兩個變量來存儲鍵和值,隨後將他們打印出來。加號(+)是一個拼接運算符,作用是將key和value連接在字符串Key和Value後面。
注意要將字符18轉換為整型才能輸出。
遍歷字典中的鍵
使用方法keys()
<code>person = {'name'
:'qimu'
,'age'
: 18}for
keyin
person.keys():
for循環提取字典中所有的鍵,並將它存儲到變量key中,然後以首字母大寫的方式打印輸出。
注意:如果將keys()省略,輸出不變。這是因為遍歷字典時,會默認遍歷所有的鍵。
字典總是很明確的記錄鍵和值之間的關聯關係,但獲取字典的元素時,獲取順序時不可預測的。要想以特定順序返回元素,可使用函數sorted()來獲得按特定順序排列的鍵值對的副本。
<code>person = {'name'
:'qimu'
,'age'
: 18}for
keyin
sorted(person.keys()):
很明顯的發現這裡的輸出順序已經發生了改變。
遍歷字典中的值同遍歷字典中的鍵一樣,這裡可以採用方法values()
<code>person = {'name'
:'qimu'
,'age'
:18
}for
value
in
person.values(): print(str(value
).title()) Qimu18
/<code>
5.4嵌套
有時候,你需要將一系列字典存儲在列表中,或將列表作為值存儲在字典中,這稱為嵌套。
你可以在列表中嵌套字典。在字典中嵌套列表甚至在字典中嵌套字典。
在列表中嵌套字典
<code>person_1 = {'name'
:'qimu'
,'age'
: 18} person_2 = {'name'
:'tom'
,'age'
: 19} person_3 = {'name'
:'jack'
,'age'
: 20} persons = [person_1, person_2, person_3]for
personin
persons:'name'
:'qimu'
,'age'
: 18} {'name'
:'tom'
,'age'
: 19} {'name'
:'jack'
,'age'
: 20}/<code>
這裡創建三個字典,存儲三個人的信息。並將三個字典存儲到一個名為persons的列表中。用for循環打印三個字典。
在字典中存儲列表
<code>person = {'name'
:'qimu'
,'age'
: 18,'work'
: ['students'
,'teacher'
}'name'
:'qimu'
,'age'
: 18,'work'
: ['students'
,'teacher'
}/<code>
['students', 'teacher']表示的是一個列表,存儲鍵work關聯的信息
在字典中存儲字典
<code>persons = {'qimu'
: {'name'
:'qimu'
,'age'
: 18 },'jack'
: {'name'
:'jack'
,'age'
: 20 }, }for
person_name, informationin
persons.items():"\nPerson_name:"
+ person_name) informations = information['name'
] +' '
+ str(information['age'
])"Information:"
+ informations) Person_name:qimu Information:qimu 18 Person_name:jack Information:jack 20/<code>
這裡創建了一個字典persons,有兩個鍵qimu和jack,兩個鍵所關聯的值又是一個字典。person_name 和information兩個變量分別存儲字典的鍵和與鍵相關聯的值。