python入門學習:5.字典
python入門學習:5.字典
關鍵點:字典
5.1 使用字典
在python中字典是一系列鍵-值對。每個鍵都和一個值關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字串、列表乃至字典。在python中,字典用花括號表示。如下,健-值是相互關聯的兩個值,鍵和值之間用冒號分開,而健-值對之間用逗號分開
1alien_0 = {'color':'green','point':5}
5.1.1 訪問字典中的值
要獲取與鍵相關聯的值,可以依次指定字典名和放在方括號內的鍵。如下所示:
1alien_0 = {'color':'green','point':5}
2print(alien_0['color'])
5.1.2 新增健-值對
字典是一種動態結構,可隨時在其中新增鍵-值對。要新增健-值對,可依次指定字典名、用方括號括起來的鍵和與之關聯的值
1alien_0 = {'color':'green','point':5}
2print(alien_0)
3alien_0[x_position] = 0 #新增x位置
4alien_0[y_position] = 25 #新增y位置
5print(alien_0)
6{'point': 5, 'color': 'green'}
7{'y_position': 25, 'x_position': 0, 'point': 5, 'color': 'green'}
8#注意,健-值對的排列順序與新增順序不同。python不關注健值對的python順序,只關心鍵和值之間的關聯
5.1.3 建立一個空字典
有些場合需要先建立一個空字典,使用一對空的{}即可
1alien_0 = {}
2alien_0['color'] = 'green'
3alien_0['point'] = 5
4print(alien_0)
5.1.4 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及該鍵關聯的新值。
1alien_0 = {'color':'green','point':5}
2print(alien_0)
3alien_0['color'] = 'red'
4print(alien_0)
5.1.5 刪除鍵-值對
對於字典中不需要的資訊,可使用del語句將相應的鍵-值對徹底刪除。使用del語句必須指定字典名和要刪除的鍵。
1alien_0 = {} #建立一個空字典
2alien_0['color'] = 'green' #新增一個健值對
3alien_0['point'] = 5 #新增一個健值對
4print(alien_0)
5del alien_0['point'] #刪除一個健值對
6print(alien_0)
5.2 遍歷字典
5.2.1 遍歷所有的鍵-值對
使用for迴圈通過方法items()遍歷鍵和值
1user_0 = {
2 'username': 'efermi',
3 'frist' : 'enrico',
4 'last': 'fermi'
5}
6user_0 = {
7 'username': 'efermi',
8 'frist' : 'enrico',
9 'last': 'fermi'
10}
11for key,value in user_0.items():
12 print("\nkeys:"+ key)
13 print("Value:"+value)
14#注意遍歷字典時,健值對返回的順序也與儲存順序不同
5.2.2 遍歷字典中的所有鍵
for迴圈遍歷,通過方法keys()獲取健值
1user_0 = {
2 'username': 'efermi',
3 'frist' : 'enrico',
4 'last': 'fermi'
5}
6for key in user_0.keys():
7 print("\nkeys:"+ key)
5.2.3 按順序遍歷字典中的所有鍵
字典總是明確記錄鍵和值之間的關聯關係,但是獲取字典元素時,獲取順序是不可預測的,要以特定的順序返回元素,一種辦法是在for迴圈中對返回的鍵進行排序。為此可以使用函式sorted()來獲得按特定順序排列的鍵列表的腐敗:
1favorite_languages = {
2 'jen': 'python',
3 'sarah': 'c',
4 'edward':'ruby',
5 'phil': 'python',
6 }
7for name in sorted(favorite_languages.keys()): #生成key列表
8#按字母排序
9Edward,thank you for talking the poll.
10Jen,thank you for talking the poll.
11Phil,thank you for talking the poll.
12Sarah,thank you for talking the poll.
5.2.4 遍歷字典中的所有值
如果只關心值,可通過values(),返回一個值列表,不包含任何鍵
1favorite_languages = {
2 'jen': 'python',
3 'sarah': 'c',
4 'edward':'ruby',
5 'phil': 'python',
6 }
7for language in favorite_languages.values(): #生成value列表
8 print(language.title())
9
10C
11Ruby
12Python
13Python
通過set()可以讓python找出列表中獨一無二的元素,剔除重複元素
1favorite_languages = {
2 'jen': 'python',
3 'sarah': 'c',
4 'edward':'ruby',
5 'phil': 'python',
6 }
7for language in set(favorite_languages.values()): #生成value列表
8 print(language.title())
5.3 巢狀
有時候,需要將一系列字典儲存在列表中,或將列表作為值儲存在字典中,這稱為巢狀。
5.3.1 字典列表
列表中巢狀字典。
1alien_0 = {'color': 'green','point':5}
2alien_1 = {'color': 'yellow','point':10}
3alien_2 = {'color': 'red','point':15}
4aliens = [alien_0,alien_1,alien_2]
5for alien in aliens:
6 print(alien)
5.3.2 在字典中儲存列表
有時候需要將字典儲存在列表中。例如:
1pizza = {
2 'crust':'thick',
3 'toppings':['mushrooms','extra chesse'],
4 }
5print("you ordered a" + pizza['crust'] + "-crust pizaa" + "whith the following toppings:")
6for topping in pizza['toppings']:#遍歷字典中列表
7 print("\t" + topping)
5.3.3 在字典中儲存字典
在字典中也可以巢狀字典,不過這樣會使程式碼結構變地複雜
1users = {
2 'aeinstein' : {
3 'frist':'albert',
4 'last':'einstein',
5 'location':'princetion',
6 },
7 'mcurie' : {
8 'frist':'marie',
9 'last':'curie',
10 'location':'paris',
11 },
12 }
13for username, user_info in users.items():
14 print("\nUserName: "+ username)
15 full_name = user_info['frist'] + " " + user_info['last']
16 location = user_info['location']
17
18 print("\tfull name: "+ full_name.title())
19 print("\tlocation: "+ location.title())