一、什麼是字典
字典是Python中最強大的資料型別之一,也是Python語言中唯一的對映型別。對映型別物件裡雜湊值(鍵,key)和指向的物件(值,value)是一對多的的關係,通常被認為是可變的雜湊表,字典物件是可變的,它是一個容器型別,能儲存任意個數的Python物件,其中也可包括其他容器型別。
字典型別與序列型別的區別:
1.存取和訪問資料的方式不同。
2.序列型別只用數字型別的鍵(從序列的開始按數值順序索引);
3.對映型別可以用其他物件型別作鍵(如:數字、字串、元組,一般用字串作鍵),和序列型別的鍵不同,對映型別的鍵直
4.接或間接地和儲存資料值相關聯。
5.對映型別中的資料是無序排列的,這和序列型別是不一樣的,序列型別是以數值序排列的。
6.對映型別用鍵直接“對映”到值。
總之,Python中字典是一系列"鍵-值"對,每個鍵都與一個值關聯,可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字串、列表乃至字典。事實上,可將任何Python物件用作字典中的值。
一個簡單字典的示例:
student_A ={'name':'Allen','age':'14','grade':'8'} # 定義一個字典 print(student_A['name']) print(student_A['age']) print(student_A['grade']) new_names = student_A['name'] new_ages = student_A ['age'] new_grades= student_A ['grade'] print("The student_A's name is " + new_names.title()+ ",and she is "+str(new_ages) +" years old,and Grade "+str(new_grades))
其中,student_A={'name':'Allen','age':'14','grade':'8'} 定義了一個名為student_A的字典,該字典中有三個關鍵字'name','age'和'grade',對應的值分別為'Allen','14'和'8'
student_A['name'] 表示引用的是student_A['name']的值,即Allen,也就是語句:new_names = student_A['name'] 和new_names='Allen'是一樣的。
一、建立一個字典
1)如上述程式碼,直接定義一個字典,student_A ={'name':'Allen','age':'14','grade':'8'},列出各關鍵字和對應的值;
2)先使用一對花括號定義一個字典,再分行新增各個分鍵值對:
student_B={} student_B['name']='Jack' student_B['age']=13 student_B['grade']=7
二、在原有字典上新增“鍵-值”對:由於字典是可變的,能儲存任意個數物件,因此可隨意新增
student_A['address'] ="Hubei" #增加了一個地址健值對,由原來的3個變成4個 student_A['PhoneNumber'] ="18012345678"#增加了一個電話健值對,字典student_A裡由4個變成5個 print(student_A) #鍵 — 值對的排列順序與新增順序不同。Python不關心鍵-值對的新增順序,而只關心鍵和值之間的關聯關係
即在student_A字典原有3個關鍵字的基礎上,增加了兩個關鍵字address和PhoneNumber。
上述程式碼執行結果:
三、修改字典中的值:要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及與該鍵相關聯的新值。
student_B['age']=14 #修改student_B的age值為14 print(student_B) print("\n")
四、刪除鍵-值對:對於字典中不再需要的資訊,可使用 del 語句將相應的鍵-值對徹底刪除。使用 del 語句時,必須指定字典名和要刪除的鍵。
del student_A['address'] print(student_A)
五、由類似物件組成的字典:字典儲存的是一個物件(學生A或B)的多種資訊,但也可以使用字典來儲存眾多物件的同一種資訊
favor_languages = {'jack': 'python','sarah': 'c','lucy': 'ruby','phil': 'python'} print(favor_languages['lucy'])
六、遍歷字典
一個Python字典可能只包含幾個鍵-值對,也可能包含數百萬個鍵-值對。鑑於字典可能包含大量的資料,Python支援對字典遍歷。字典可用於以各種方式儲存資訊,因此有多種遍歷字典的方式:可遍歷字典的所有鍵-值對、鍵或值。
1)遍歷所有的鍵值對:用於遍歷字典的 for 迴圈,可宣告兩個變數,用於儲存鍵-值對中的鍵和值。
for key,value in student_A.items():# 注意,student_A後增加了.items() 用於讀取字典中的每一項 print("\nKey: " + key) #列印出關鍵字 print("Value: " + value) #列印出關鍵字的值 for name, language in favor_languages.items(): print(name.title() + "'s favorite language is " +language.title() + ".") #遍歷字典中的每個鍵-值對,並將鍵儲存在變數name中,而將值儲存在變量language 中
for name in favor_languages.keys(): print(name.title()) print("\n") my_friends = ['jack', 'sarah'] for name in favor_languages.keys(): print(name.title()) if name in my_friends: print(" Hi " + name.title() +", I see your favorite language is " +favor_languages[name].title() + "!")
具體執行結果: