Python3 基础学习笔记 C05【字典】
CSDN 課程推薦:《8小時Python零基礎輕松入門》,講師齊偉,蘇州研途教育科技有限公司CTO,蘇州大學應用統計專業碩士生指導委員會委員;已出版《跟老齊學Python:輕松入門》《跟老齊學Python:Django實戰》、《跟老齊學Python:數據分析》和《Python大學實用教程》暢銷圖書。
Python3 基礎學習筆記第五章【字典】
目錄
- 【5.1】一個簡單的字典
- 【5.1.1】訪問字典中的值
- 【5.1.2】添加鍵-值對
- 【5.1.3】修改字典中的值
- 【5.1.4】刪除鍵-值對
- 【5.1.5】由類似對象組成的字典
- 【5.2】遍歷字典
- 【5.2.1】方法 items() 遍歷所有的鍵-值對
- 【5.2.2】方法 keys() 遍歷字典中所有的鍵
- 【5.2.3】函數 sorted() 按順序遍歷字典中的所有鍵
- 【5.2.4】方法 values() 遍歷字典中的所有值
- 【5.3】嵌套
- 【5.3.1】字典列表
- 【5.3.2】在字典中存儲列表
- 【5.3.3】在字典中存儲字典
- 【5.4】其他方法
- 【5.4.1】方法 clear() 刪除字典內所有元素
- 【5.4.2】方法 fromkeys() 用于創建一個新字典
- 【5.4.3】方法 get() 返回指定鍵的值
- 【5.4.4】方法 \_\_contains\_\_() 判斷鍵是否存在于字典中
- 【5.4.5】方法 setdefault() 為鍵的值設置默認值。
- 【5.4.6】方法 update() 把一個字典的鍵值對更新到另一個字典里
【5.1】一個簡單的字典
fruits = {'apple' : 'red' , 'number' : 5} print(fruits['apple']) print(fruits['number'])輸出結果如下:
red 5在Python中,字典是一系列鍵-值對。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字符串、列表乃至字典。事實上,可以將任何Python對象用作字典中的值。鍵-值對是兩個相關聯的值。在指定鍵時,Python將返回與之相關聯的值。鍵和值之間用冒號分隔,而鍵-值對之間用逗號分隔。在字典中,想儲存多少個鍵-值對都可以
【5.1.1】訪問字典中的值
要獲取與鍵相關聯的值,可依次指定字典名和放在方括號內的鍵:
fruits = {'apple' : 'red' , 'number' : 5} number_fruits = fruits['number'] print("The number of apple is " + str(number_fruits) + "!")輸出結果如下:
The number of apple is 5!【5.1.2】添加鍵-值對
字典是一種動態結構,可隨時在其中添加鍵-值對。要添加鍵-值對,可依次指定字典名、用方括號括起來的鍵和相關聯的值
fruits = {'apple' : 'red' , 'number1' : 5} print(fruits) fruits['banana'] = 'yellow' fruits['number2'] = 13 print(fruits)輸出結果如下:
{'apple': 'red', 'number1': 5} {'apple': 'red', 'number1': 5, 'banana': 'yellow', 'number2': 13}注意:鍵-值對的排列順序與添加順序不同。Python不關心鍵-值對的添加順序,而只關心鍵和值之間的關聯關系
有時候為了方便也可以先使用一對空的花括號定義一個字典,再分行添加各個鍵-值對:
fruits = {} fruits['banana'] = 'yellow' fruits['number2'] = 13 print(fruits)輸出結果如下:
{'banana': 'yellow', 'number2': 13}【5.1.3】修改字典中的值
要修改字典中的值,可依次指定字典名、用方括號括起來的鍵以及與該鍵相關聯的新值
fruits = {'color' : 'red'} print("The color of the fruits is " + fruits['color'] + "!") fruits['color'] = 'yellow' print("The color of the fruits is " + fruits['color'] + " now!")輸出結果如下:
The color of the fruits is red! The color of the fruits is yellow now!進階:對一個能夠以不同速度移動的外星人的位置進行跟蹤,為此,我們將儲存該外星人的當前速度,并據此確定該外星人將向右移動多遠:
alien = {'x_position': 0, 'y_position': 25, 'speed': 'medium'} print("Original x-position: " + str(alien['x_position']))#向右移動外星人,據外星人當前速度決定將其移動多遠 if alien['speed'] == 'slow':x_increment = 1 elif alien['speed'] == 'medium':x_increment = 2 else:x_increment = 3#新位置等于老位置加上增量 alien['x_position'] = alien['x_position'] + x_increment print("New x_position: " + str(alien['x_position']))輸出結果如下:
Original x-position: 0 New x_position: 2【5.1.4】刪除鍵-值對
對于字典中不再需要的信息,可使用del語句將相應的鍵-值對徹底刪除。使用del語句時,必須指定字典名和要刪除的鍵
fruits = {'apple' : 'red' , 'number' : 5} print(fruits) del fruits['number'] print(fruits)輸出結果如下:
{'apple': 'red', 'number': 5} {'apple': 'red'}【5.1.5】由類似對象組成的字典
字典儲存的可以是一個對象的多種信息,也可以儲存眾多對象的同一種信息,例如要調查很多人最喜歡的編程語言:
favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,} print("Sarah's favorite languages is " + favorite_languages['sarah'].title() + "!")輸出結果如下:
Sarah's favorite languages is C!【5.2】遍歷字典
【5.2.1】方法 items() 遍歷所有的鍵-值對
使用for循環來遍歷字典:
name = {'username' : 'efermi' ,'first' : 'enrico' ,'last' : 'fermi' ,} for key , value in name.items():print("\nKey: " + key)print("Value: " + value)輸出結果如下:
Key: username Value: efermiKey: first Value: enricoKey: last Value: fermifor語句的第二部分包含字典和方法items(),它返回一個鍵-值對列表。接下來,for循環依次將每個鍵-值對儲存到指定的兩個變量中
favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,} for name, language in favorite_languages.items():print(name.title() + "'s favorite language is " + language.title() + ".")輸出結果如下:
Jen's favorite language is Python. Sarah's favorite language is C. Edward's favorite language is Ruby. Phil's favorite language is Java.【5.2.2】方法 keys() 遍歷字典中所有的鍵
在不需要使用字典中的值時,方法key()很有用,下面來遍歷字典favorite_languages,并將每個被調查者的名字都打印出來:
favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,} for name in favorite_languages.keys():print(name.title())輸出結果如下:
Jen Sarah Edward Phil遍歷字典時,會默認遍歷所有的鍵,因此,如果將上述代碼中的for name in favorite_languages.keys():替換為for name in favorite_languages:輸出結果將不變
進階:
輸出結果如下:
Jen Sarah Hi sarah, I see your favorite languages is C! Edward Phil Hi phil, I see your favorite languages is Java!【5.2.3】函數 sorted() 按順序遍歷字典中的所有鍵
字典總是明確地記錄鍵和值之間的關聯關系,但獲取字典的元素時,獲取順序是不可預測的,要以特定的順序返回元素,一種辦法是在for循環中對返回的鍵進行排序,為此,可以使用函數sorted()來獲得按特定順序排列的鍵列表的副本:
favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,} for name in sorted(favorite_languages.keys()):print(name.title())輸出結果如下:
Edward Jen Phil Sarah【5.2.4】方法 values() 遍歷字典中的所有值
favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,} for languages in favorite_languages.values():print(languages.title())輸出結果如下:
Python C Ruby Java這種做法提取字典中所有的值,而沒有考慮是否重復,為剔除重復項,可使用集合(set),集合類似于列表,但每個元素都必須是獨一無二的:
favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'python' ,} for languages in set(favorite_languages.values()):print(languages.title())輸出結果如下:
C Python Ruby【5.3】嵌套
有時候,需要將一系列字典儲存在列表中,或將列表作為值儲存在字典中,這稱為嵌套。可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典
【5.3.1】字典列表
下面代碼創建三個字典,每個字典都表示一個個學生,將這三個字典都放到一個名為students的列表當中,遍歷列表將每個學生都打印出來:
student_0 = {'name' : 'anily' , 'class' : 2} student_1 = {'name' : 'nikey' , 'class' : 5} student_2 = {'name' : 'heyk' , 'class' : 3} students = [student_0 , student_1 , student_2] for student in students:print(student)輸出結果如下:
{'name': 'anily', 'class': 2} {'name': 'nikey', 'class': 5} {'name': 'heyk', 'class': 3}進階:使用 range() 自動生成三十個外星人:
#創建一個用于存儲外星人的空列表 aliens = []#創建三十個綠色的外星人 for alien_number in range(30):new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'}aliens.append(new_alien)#顯示前五個外星人 for alien in aliens[:5]:print(alien) print("......")#顯示創建了多少外星人 print("Total number of aliens: " + str(len(aliens)))輸出結果如下:
{'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} ...... Total number of aliens: 30在上述例子中,雖然每個外星人都具有相同特征,但在Python看來,每個外星人都是獨立的,我們可以獨立地修改每個外星人:
aliens = [] for alien_number in range(30):new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'}aliens.append(new_alien) for alien in aliens[0:3]:if alien['color'] == 'green':alien['color'] = 'yellow'alien['points'] = 10alien['speed'] = 'medium' for alien in aliens[:5]:print(alien) print("......") print("Total number of aliens: " + str(len(aliens)))輸出結果如下:
{'color': 'yellow', 'points': 10, 'speed': 'medium'} {'color': 'yellow', 'points': 10, 'speed': 'medium'} {'color': 'yellow', 'points': 10, 'speed': 'medium'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} ...... Total number of aliens: 30【5.3.2】在字典中存儲列表
有時候需要將列表儲存在字典中,而不是將字典儲存在列表中:
例一:
輸出結果如下:
You ordered a thick-crust pizzawith the following toppings :mushroomsextra chees例二:
favorite_languages = {'jen' : ['python' , 'ruby'] ,'sarah' : ['c'] ,'edward' : ['go' , 'ruby'] ,'phil' : ['python' , 'java'] ,} for name , languages in favorite_languages.items():print("\n" + name.title() + "'s favorite languages are:")for language in languages:print("\t" + language.title())輸出結果如下:
Jen's favorite languages are:PythonRubySarah's favorite languages are:CEdward's favorite languages are:GoRubyPhil's favorite languages are:PythonJava【5.3.3】在字典中存儲字典
users = {'aeinstein' : {'first' : 'albert' ,'last' : 'einstein' ,'location' : 'princeton' ,} ,'mcurie' : {'first' : 'marie' ,'last' : 'curie' ,'location' : 'paris' ,} ,} for username , user_info in users.items():print("\nUsername : " + username)full_name = user_info['first'] + " " + user_info['last']location = user_info['location']print("\tFull name : " + full_name.title())print("\tlocation : " + location .title())輸出結果如下:
Username : aeinsteinFull name : Albert Einsteinlocation : PrincetonUsername : mcurieFull name : Marie Curielocation : Paris【5.4】其他方法
【5.4.1】方法 clear() 刪除字典內所有元素
dict = {'Name': 'TRHX','Age': 20 }print(len(dict)) dict.clear() print(len(dict))輸出結果如下:
2 0【5.4.2】方法 fromkeys() 用于創建一個新字典
基本語法:dict.fromkeys(seq[, value])
fromkeys() 方法用于創建一個新字典,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應的初始值。
seq = ('A', 'B', 'C')dict1 = dict.fromkeys(seq) print("新字典 dict1 為 : %s" % dict1)dict2 = dict.fromkeys(seq, 10) print("新字典 dict2 為 : %s" % dict2)輸出結果如下:
新字典 dict1 為 : {'A': None, 'B': None, 'C': None} 新字典 dict2 為 : {'A': 10, 'B': 10, 'C': 10}注意:fromkeys() 方法只用來創建新字典,不負責保存。當通過一個字典來調用 fromkeys() 方法時,如果需要后續使用一定記得給他復制給其他的變量。
【5.4.3】方法 get() 返回指定鍵的值
基本語法:dict.get(key, default=None)
get() 方法返回指定鍵的值,如果值不在字典中則返回默認值。
dict = {'Name': 'TRHX', 'Age': 20}print('Value : %s' % dict.get('Age')) print('Value : %s' % dict.get('Sex')) print('Value : %s' % dict.get('Height', 'Unknown'))輸出結果如下:
Value : 20 Value : None Value : Unknown【5.4.4】方法 __contains__() 判斷鍵是否存在于字典中
基本語法:__contains__(key)
__contains__(key) 方法用于判斷鍵是否存在于字典中,如果鍵在字典里返回 true,否則返回 false。在 Python 2.x 的版本中,使用的是 dict.has_key(key) 方法。
dict = {'Name': 'TRHX', 'Age': 20}print('Value : %s' % dict.__contains__('Age')) print('Value : %s' % dict.__contains__('Sex'))輸出結果如下:
Value : True Value : False【5.4.5】方法 setdefault() 為鍵的值設置默認值。
基本語法:dict.setdefault(key, default=None)
setdefault() 方法和 get() 方法類似,如果字典中包含有給定鍵,則返回該鍵對應的值;如果鍵不存在于字典中,將會添加鍵并將值設為默認值。
dict = {'Name1': 'T1', 'Name2': 'T2'}print('Value : %s' % dict.setdefault('Name1')) print('Value : %s' % dict.setdefault('Name2', 'T3')) print('Value : %s' % dict.setdefault('Name3', 'T3')) print('Value : %s' % dict.setdefault('Name4')) print(dict)輸出結果如下:
Value : T1 Value : T2 Value : T3 Value : None {'Name1': 'T1', 'Name2': 'T2', 'Name3': 'T3', 'Name4': None}【5.4.6】方法 update() 把一個字典的鍵值對更新到另一個字典里
基本語法:dict.update(dict2)
update() 方法把一個字典的鍵值對更新到另一個字典里。
- 兩個字典有相同的鍵時:會使用新的字典中該 key 對應的 value 值。
- 有新的鍵時:會直接把新的字典中的 key、value 加入到原字典中。
輸出結果如下:
Value : {'A': '3', 'B': '2', 'C': '4'} 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Python3 基础学习笔记 C05【字典】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 33岁男子喝饮料吃油炸致雌激素增多 胸部
- 下一篇: 4nm 3.2GHz死磕骁龙8+!一图看