學習教材
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iYlFTYxUGZyUDZ4YzMzIDMklTOhZmZyYTY2UTY2MGMw8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
第六章 字典
1、字典的簡單操作 #定義一個字典
cars={'color':'red','price':200000}
print(cars)
#通路字典中的值
print(cars['color'])
print(cars['price'])
#為字典添加鍵值對
cars['owner']='sushan'
print(cars)
print(cars['owner'])
#删除鍵值對
del cars['owner']
print(cars) 輸出結果:
{‘color’: ‘red’, ‘price’: 200000}
red
200000
{‘color’: ‘red’, ‘price’: 200000, ‘owner’: ‘sushan’}
sushan
{‘color’: ‘red’, ‘price’: 200000}
2、周遊字典
鑒于字典可能包含大量的資料,Python支援對字典周遊。字典可用于以各種方式存儲資訊
是以有多種周遊字典的方式:可周遊字典的所有鍵—值對、鍵或值。
周遊所有的鍵值對 items()
方法items()傳回一個鍵—值對清單。用for循環依次将每個鍵—值對存儲到指定的兩個變量中 code={
'first':'c',
'second':'c++',
'third':'c#',
}
#可聲明兩個變量,用于存儲鍵—值對中的鍵和值
for key,value in code.items():
print('key:'+key)
print('value:'+value) 輸出結果:
key:first
value:c
key:second
value:c++
key:third
value:c# 注意:即便周遊字典時,鍵—值對的傳回順序也與存儲順序不同。Python不關心鍵—值對的存儲順序,而隻跟蹤鍵和值之間的關聯關系。
周遊字典中的所有鍵 keys()
keys()傳回的字典中所有的鍵 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name) 輸出結果:
jen
sarah
edward
phil
也可以不使用keys方法,直接周遊字典,預設周遊的就是所有的鍵 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages:
print(name) 輸出結果同上,不變
應用:調查一些人,用一個字典存儲每個人最愛的程式設計語言,然後再用一個列遍存儲你的朋友,對于受調查的人中,若有你的朋友,就列印一句話“Hi,xxx. I see your favorite language is xxx”
這個問題有兩種寫法:
1、周遊所有的鍵,若遇到你朋友,就列印
2、周遊所有的朋友,若遇到在字典的鍵中的朋友,就列印 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
my_friends=['phil','juil']
#周遊所有鍵
for name in favorite_languages:
if name in my_friends:
print( 'Hi,'+name+'. I see your favorite language is '
+favorite_languages[name].title()) 輸出結果:
Hi,phil. I see your favorite language is Python favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
my_friends=['phil','juil']
#周遊朋友 看是否在字典裡
for name in my_friends:
if name in favorite_languages.keys():
print( 'Hi,'+name+'. I see your favorite language is '
+favorite_languages[name].title())
兩種方法都能完成題目要求。
周遊字典中的所有值 values()
方法values(),它傳回一個值清單,而不包含任何鍵。用法與keys()相同 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.values()):
print(name.title())
3、輸出時排序和去重
排序
字典總是明确地記錄鍵和值之間的關聯關系,但擷取字典的元素時,擷取順序是不可預測的。這不是問題,因為通常你想要的隻是擷取與鍵相關聯的正确的值。要以特定的順序傳回元素,一種辦法是在for循環中對傳回的鍵進行排序。為此,可使用函數sorted()來獲得按特定順序排列的鍵清單的副本:
注意:這裡使用的是sorted(),前面我們學過,sorted()隻是臨時排序,不改變原有順序 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title()) 輸出結果:
Edward
Jen
Phil
Sarah
去重
前面介紹的周遊方法,都沒有去除重複的元素
通過對包含重複元素的清單我們可以調用set(),Python會找出清單中獨一無二的元素,并使用這些元素來建立一個集合 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in set(favorite_languages.values()):
print(name.title()) 輸出結果:
Python
C
Ruby
4、嵌套
有時候,需要将一系列字典存儲在清單中,或将清單作為值存儲在字典中,這稱為嵌套。你可以在清單中嵌套字典、在字典中嵌套清單甚至在字典中嵌套字典。
在清單中存儲字典 car1={'color':'red','price':'500'}
car2={'color':'blue','price':'1000'}
car3={'color':'black','price':'1100'}
#建立一個清單 将三個字典都放進去
cars=[car1,car2,car3]
for num in cars:
print(num) 輸出結果:
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘blue’, ‘price’: ‘1000’}
{‘color’: ‘black’, ‘price’: ‘1100’}
為列遍添加十個汽車,輸出前五個 cars=[] #空清單
for num in range(1,11):
car={'color':'red','price':'500'}
cars.append(car)
#輸出前五個
for num in range(0,5):
print(cars[num])
print('...') 輸出結果:
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
…
在字典中存儲清單
一個人可能喜歡多個語言,列印每個人喜歡的語言,注意喜歡一個語言和喜歡多個的列印的話不一樣哦 #字典裡面存清單
a = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name,language in a.items():
if len(language)>1:
print(name.title()+"'s favorite languages are: ")
for num in language:
print(num)
else:
print(name.title()+"'s favorite language is: "+language[0])
在字典中存字典
一個字典用來存儲所有使用者的資訊,裡面每個使用者的資訊都是一個字典,要求列印所有使用者資訊 users={
'sushan':{
'num':'001',
'password':'123',
},
'sarah':{
'num':'002',
'password':'123',
},
'juil':{
'num':'003',
'password':'123',
},
}
for name,info in users.items():
print(name.title()+':')
for one,two in info.items():
print(one+'='+two) 輸出結果;
Sushan:
num=001
password=123
Sarah:
num=002
password=123
Juil:
num=003
password=123