1. 程式人生 > >萌新向Python資料分析及資料探勘 第一章 Python基礎 第六節 字典

萌新向Python資料分析及資料探勘 第一章 Python基礎 第六節 字典

第一章 Python基礎

第六節 字典


字典類似於通過聯絡人名字查詢聯絡人電話號碼的電話本,即把鍵(名字)和值(電話號碼)聯絡在一起。注意,鍵必須是唯一的。並且python只能使用不可變的物件(比如字串)來作為字典的鍵,但是可以將不可變或可變的物件作為字典的值。舉一個簡單的字典例子。

如果說列表元組是一頁筆記的話,字典就是一沓筆記,每張都有一個標籤,沒有順序

alien = {'color': 'green', 'points': 5}這裡有一沓筆記叫做alien(外星人),一張標籤是color(顏色) ,裡面寫著green,另一張標籤是points(點數)裡面寫著5

鍵值對在字典中的標記為:d = {key1 : value1, key2 : value2 }。注意鍵/值對用冒號分割,而各個對用逗號分割,所有這些都包括在花括號中。字典中的鍵/值對是沒有順序的。如果想要一個指定的順序,那麼在使用前自行排序。

使用字典

 

訪問字典中的值 

依次指定字典名和放在方括號內的鍵,如下所示:

 

程式碼:

1 alien_0 = {'color': 'green', 'points': 5} #這裡有一沓筆記叫做alien_0(外星人_0),一張標籤是color(顏色)
2 #,裡面寫著green,另一張標籤是points(點數)裡面寫著5
3 print(alien_0['color'])#抽出color標籤的一張,列印裡面的內容
View Code

 

 

建立字典並修改字典中的值 

 

建立空字典時使用一對空的花括號定義一個字典,再分行新增各個鍵值對。 
修改字典的值可以指定字典名、鍵以及新的賦值。

程式碼:

1 alien = {}#建立一沓空的筆記叫做alien
2 alien['x_position'] = 0 #在alien中空白紙中寫上標籤'x_position'(x軸位置),在筆記裡面寫上0
3 alien['y_position'] = 25#在alien中空白紙中寫上標籤'y_position'(x軸位置),在筆記裡面寫上25
4 print(alien) #列印這一沓筆記
5 alien['x_position'] = 25#
把標籤為'x_position'(x軸位置)的內容改成25 6 print(alien)#列印這一沓筆記
View Code

 

 

新增/刪除鍵值對 

 

字典是一種動態結構。 
新增鍵值對時,依次指定字典名、方括號和鍵、所賦的值。 
刪除鍵值對時,可使用del語句,指定字典名和要刪除的鍵。

 

 程式碼:

1 alien = {'color': 'green', 'points': 5} #這裡有一沓筆記叫做alien_0(外星人_0),一張標籤是color(顏色) ,裡面寫著green,另一張標籤是points(點數)裡面寫著5
2 print(alien)#列印這一沓筆記
3 alien['x_position'] = 0#在alien中空白紙中寫上標籤'x_position'(x軸位置),在筆記裡面寫上0
4 alien['y_position'] = 25#在alien中空白紙中寫上標籤'y_position'(x軸位置),在筆記裡面寫上25
5 print(alien)#列印這一沓筆記
6 del alien['color'] #扔掉標籤為“color”的一張
7 print(alien)#列印這一沓筆記
View Code

 


遍歷字典

 

遍歷所有的鍵值對

程式碼:

1 user = {
2       'username': 'efermi',#前面有四個空格的縮排,下同
3       'first': 'enrico',
4       'last': 'fermi',
5       } #這裡有一沓筆記,三張紙有字
6 for key, value in user.items(): #把筆記一張一張紙抽出來(包括標籤和內容)
7       print("\nKey: " + key)#列印標籤
8       print("Value: " + value)#列印內容
View Code

 

 


由上可知,在字典的遍歷中,可以宣告兩個變數分別儲存鍵值對中的鍵和值。字典的方法item()返回一個鍵值對列表。注意,在遍歷字典的時候,鍵值對的返回順序與儲存順序不同。python只關係鍵和值之間的對應關係。 
遍歷字典中的所有鍵/值 
使用方法keys()可以遍歷字典中的所有鍵。或者不使用方法,預設遍歷字典中的鍵。 
使用方法values()可以遍歷字典中的所有值。返回一個值列表。

 

程式碼:

 1 favorite_languages = {
 2 
 3     'jen': 'python',
 4 
 5     'sarah': 'c',
 6 
 7     'edward': 'ruby',
 8 
 9     'phil': 'python',
10 
11     }# 建立一個四張紙的筆記(字典)
12 
13 for name in favorite_languages.keys():
14 
15     print(name.title())#把字典的標籤一個一個拉出來列印首字母大寫形式
16 
17 for language in favorite_languages.values():
18 
19     print(language.title())#把字典裡每張筆記內容一個一個拉出來列印首字母大寫形式
View Code

 

或者不使用方法,預設遍歷字典中的鍵。即for name in favorite_languages.keys():效果等同for name in favorite_languages:。 
若需按順序遍歷,只需使用sorted()。

 

巢狀

將一系列字典儲存在列表中,或者將列表作為值儲存在字典中,稱為巢狀。 
字典列表 
將一系列字典儲存在列表中。

 

執行結果:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}

 

列表字典 


將字典儲存在列表中。就相當於 在有標籤的筆記本的一頁上貼便籤

程式碼:

1 lili = {
2     'name': 'lili',
3     'phonenum': ['123', '456'],
4     } #建立一個lili的字典,裡面又兩對鍵值對
5 print("lili's name is " + lili['name'] + " and her phonenum is ") 
6 #按要求提取字典內的標籤'name'中的內容進行列印
7 for num in lili['phonenum']:#把pehonenum鍵中的列表裡面的內容進行逐個列印
8     print("\t" + num)
View Code

 

 

字典中巢狀字典 

 


字典中巢狀字典 就相當於 在有標籤的筆記本的一頁上附上另外一沓筆記

儲存網站使用者資訊可以在字典中巢狀字典,例如:

 1 users = {
 2     'aeinstein': {
 3         'first': 'albert',
 4         'last': 'einstein',
 5         'location': 'princeton',
 6         },
 7     'mcurie': {
 8         'first': 'marie',
 9         'last': 'curie',
10         'location': 'paris',
11         },
12     } # 這裡的user裡面,有兩沓筆記,標籤分別為:'aeinstein'和'mcurie',裡面的內容都是一個標籤為 first、last、
13      #;location的一疊筆記,內容是這兩位科學家的資訊
14 for username, user_info in users.items():
15     print("\nUsername: " + username)#列印users的標籤名
16     full_name = user_info['first'] + " " + user_info['last']
17     # 用標籤內容裡面的字典中的first標籤和last標籤列印全名
18     location = user_info['location']
19     #用標籤內容裡面的字典中的location標籤列印地址
20     print("\tFull name: " + full_name.title())
21     print("\tLocation: " + location.title())
View Code