<u>字典相當(dāng)于java中的Map集合(以鍵值對的形式存放數(shù)據(jù))</u>
健:一般是字符串居多。值:數(shù)字吗冤、字符串又厉、列表、字典本身欣孤、任何Python對象馋没。
alien_0 = {'color':'green','points':s}
alien_1 = {'color':'red'}
在字典中,你想存儲多少個鍵—值對都可以降传。最簡單的字典只有一個鍵—值對
5.1 使用字典
5.1.1 訪問字典中的值——(依次指定字典名和放在方括號內(nèi)的鍵)
alien_0 = {'color': 'green','points':s}
print(alien_0['color'])
#輸出結(jié)果:green
new_points = alien_0['points']
print("You just earned " + str(new_points) + " points!")
str()將整個整數(shù)轉(zhuǎn)化為字符串。
5.1.2 添加鍵-值對
字典是一種動態(tài)結(jié)構(gòu)勾怒。
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
#結(jié)果:
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}
注意:Python不關(guān)心鍵—值對的添加順序婆排, 而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系。
5.1.3 先創(chuàng)建一個空字典
可先使用一對 空的花括號定義一個字典笔链,再分行添加各個鍵—值對
alien_0 = {} #定義一個空字典
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
#結(jié)果:
{'color': 'green', 'points': 5}
5.1.4 修改字典中的值
要修改字典中的值段只,可依次指定字典名、用方括號括起的鍵以及與該鍵相關(guān)聯(lián)的新值鉴扫。
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")
#結(jié)果:
The alien is green.
The alien is now yellow.
5.1.5 刪除鍵-值對
使用del語句刪除赞枕,且必須指定<u>字典名</u>和<u>要刪除的鍵</u>(與鍵對應(yīng)的值也一并刪除)
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
#結(jié)果:
{'color': 'green', 'points': 5}
{'color': 'green'}
5.1.6 由類似對象組成的字典(格式)
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
確定需要使用多行來定義字典時,在輸入左花括號后按回車 鍵坪创,再在下一行縮進(jìn)四個空格炕婶,指定第一個鍵—值對,并在它后面加上一個逗號莱预。定義好字典后柠掂,在最后一個鍵—值對的下一行添加一個右花括號,并縮進(jìn)四個空格依沮,使其與 字典中的鍵對齊涯贞。
是在最后一個鍵—值對后面也加上逗號,為以后在下一行 添加鍵—值對做好準(zhǔn)備危喉。
5.2 遍歷字典
5.2.1 遍歷所有的鍵值對
運(yùn)用for循環(huán):for k, v in user_0.items() 宋渔,其中的k,v都是隨意命名,但最好要見名知意辜限。
注意:即便遍歷字典時皇拣,鍵—值對的返回順序也與存儲順序不同。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name, language in favorite_languages.items():
print(name.title() + "'s favorite language is " +
language.title() + ".")
#結(jié)果:
Jen's favorite language is Python.
Sarah's favorite language is C.
Phil's favorite language is Python.
Edward's favorite language is Ruby.
5.2.2 遍歷字典中的所有鍵--keys()
#1.
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
friends = ['phil', 'sarah']
for name in favorite_languages.keys():
print(name.title())
if name in friends:
print(" Hi " + name.title() +
", I see your favorite language is " +
favorite_languages[name].title() + "!")
#輸出結(jié)果:
Edward
Phil
Hi Phil, I see your favorite language is Python!
Sarah
Hi Sarah, I see your favorite language is C!
Jen
#2.
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")
#輸出結(jié)果:
Erin, please take our poll!
5.2.3 按順序遍歷字典中的所有鍵
要以特定的順序返回元素列粪,一種辦法是在for循環(huán)中對返回的鍵進(jìn)行排序审磁。為此谈飒,可使用函
數(shù)sorted()來獲得按特定順序排列的鍵列表的副本。
注意:<u>這里的順序并不是按照字典里的順序态蒂,而是按照字典里鍵的字母順序杭措。</u>
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title() + ", thank you for taking the poll.")
#結(jié)果:
Edward, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.
5.2.4 遍歷字典中的所有值--values()
返回一個值列表,但不包含任何鍵钾恢。
#1.提取字典中所有的值手素,而沒有考慮是否重復(fù)
for language in favorite_languages.values():
print(language.title())
#結(jié)果:
Python
C
Python
Ruby
#2.為剔除重復(fù)項,可使用集合(set)
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
print(language.title())
#結(jié)果:
The following languages have been mentioned:
Python
C
Ruby
5.3 嵌套
5.3.1 在列表中存儲字典
問題:字典alien_0包含一個外星人的各種信息瘩蚪,但無法存儲第二個外星人的信息泉懦,更別說屏幕上
全部外星人的信息了。如何管理成群結(jié)隊的外星人呢疹瘦?
解決辦法:是創(chuàng)建一個外星人列表崩哩,其中每 個外星人都是一個字典,包含有關(guān)該外星人的各種信息
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}
aliens = [alien_0, alien_1, alien_2] #將每個字典都存放在列表中
for alien in aliens:
print(alien)
#結(jié)果:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
5.3.2 在字典中存儲列表
每當(dāng)需要在字典中將一個鍵關(guān)聯(lián)到多個值時言沐,都可以在字典中嵌套一個列表
example:一個人可以喜歡多種語言
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print("\n" + name.title() + "'s favorite languages are:")
for language in languages:
print("\t" + language.title())
#結(jié)果:
Jen's favorite languages are:
Python
Ruby
Sarah's favorite languages are:
C
Phil's favorite languages are:
Python
Haskell
Edward's favorite languages are:
Ruby
Go
5.3.3 字典中存儲字典
example:用戶字典里存儲每一位用戶邓嘹,每位用戶的信息包含其各種字典信息
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())
#結(jié)果:
Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie
Full name: Marie Curie
Location: Paris