《Python程式設計:從入門到實踐》 第七天
5.4 使用if語句處理
5.4.1 檢查特殊元素 5.4.2 確定列表不是空的
requested_toppings = []
if requested_toppings:
for requested_topping in requested_toppings:
print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
在if表示式中,python將在列表至少包含一個元素時返回True,並在列表為空時返回False。 5.4.3 使用多個列表
available_toppings = ['mushrooms', 'olives', 'green peppers', 'pepperoni', 'pineapple', 'extra cheese'] requested_toppings = ['mushrooms', 'french fries', 'extra cheese'] for requested_topping in requested_toppings: if requested_topping in available_toppings: print("Adding " + requested_topping + ".") else: print("Sorry, we don't have " + requested_topping + ".")
5.5 設定if語句的格式 在條件測試的格式設定方面,PEP 8提供的唯一建議是,在諸如==、>=和<=等比較運算子兩邊各新增一個空格。
5.6 總結
第六章 字典 將學習能夠將相關資訊關聯起來的Python字典。將學習如何訪問和修改字典中的資訊。會演示如何遍歷字典中的資料。另外,還將學習儲存字典的列表、儲存列表的字典和儲存字典的字典。
6.1 一個簡單的字典 下面是一個簡單的字典:
alien_0 = {'color': 'green', 'points': 5} print(alien_0['color']) print(alien_0['points']) 輸出: green 5
6.2 使用字典 在Python中,字典是一系列鍵_值對。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字串、列表乃至字典。事實上,可將任何Python物件用作字典中的值。 在Python中,字典用放在花括號{}中的一系列鍵—值對錶示。 鍵—值對是兩個相關聯的值。指定鍵時,Python將返回與之相關聯的值。鍵和值之間用冒號分隔,而鍵—值對之間用逗號分隔。
6.2.1 訪問字典中的值
alien_0 = {'color':'green','points':5}
new_points = alien_0['points']
print("You just enrned " + str(new_points) + "points!")
字典中可包含任意數量的鍵_值對。 上述程式碼首先定義了一個字典,然後從這個字典中獲取與鍵’points’相關聯的值,並將這個值儲存在變數new_points中。接下來,將這個整數轉換為字串,並列印訊息。
6.2.2 新增鍵_值對 字典是一種動態結構,可隨時在其中新增鍵—值對。要新增鍵—值對,可依次指定字典名、用方括號括起的鍵和相關聯的值。
alien_0 = {'color':'green','points':5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
輸出:
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}
注意,鍵—值對的排列順序與新增順序不同。Python不關心鍵—值對的新增順序,而只關心鍵和值之間的關聯關係。
6.2.3 先建立一個空字典 可先使用一對空的花括號定義一個字典,再分行新增各個鍵—值對。
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
使用字典來儲存使用者提供的資料或在編寫能自動生成大量鍵—值對的程式碼時,通常都需要先定義一個空字典。
6.2.4 修改字典中的值 要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及與該鍵相關聯的新值.
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")
# 對一個能夠以不同速度移動的外星人的位置進行跟蹤。為此,我們
# 將儲存該外星人的當前速度,並據此確定該外星人將向右移動多遠
alien_0 = {'x_position':0,'y_position':25,'speed':'medium'}
print("Original x-position :" + str(alien_0['x_position']))
#向右移動外星人
#據外星人當前移動速度決定將其移動多遠
if alien_0['speed'] == 'slow':
x_increment = 1
elif alien_0['speed'] == 'medium':
x_increment = 2
else:
#這個外星人的速度一定很快
x_increment = 3
#新位置等於老位置加上增量
alien_0['x_position'] = alien_0['x_position'] + x_increment
print("New x-position:" + str(alien_0['x_position']))
6.2.5 刪除鍵_值對
對於字典中不再需要的資訊,可使用del語句將相應的鍵—值對徹底刪除。使用del語句時,必須指定字典名和要刪除的鍵。
alien_0 = {'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)
輸出:
{'color': 'green', 'points': 5}
{'color': 'green'}
注意:刪除的鍵—值對永遠消失了。
6.2.6 由類似物件組成的字典 字典可以儲存一個物件的多種資訊,也可以儲存眾多物件的同一種資訊。 (確定需要使用多行來定義字典時,在輸入左花括號後按回車鍵,再在下一行縮排四個空格,指定第一個鍵—值對,並在它後面加上一個逗號。此後你再次按回車鍵時,文字編輯器將自動縮排後續鍵—值對,且縮排量與第一個鍵—值對相同。可以在最後一個鍵_值對後面也加上逗號,為以後在下一行新增鍵_ 值對做好準備。)
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("Sarah's favorite language is " +
favorite_languages['sarah'].title() +
".")
6.3 遍歷字典 Python支援對字典遍歷。可遍歷字典的所有鍵—值對、鍵或值。
6.3.1 遍歷所有的鍵_值對
user_0 = {
'usename':'efermi',
'first':'enrico',
'last':'fermi',
}
#想獲悉該使用者字典中的所有資訊,用for迴圈遍歷這個字典
for key,value in user_0.items(): #方法items(),返回一個鍵_值對列表
print("\nKey:" + key)
print("Value:" + value)
字典的items方法作用
:是可以將字典中的所有項,以列表方式返回
。因為字典是無序的,所以用items方法返回字典的所有項,也是沒有順序的。
即便遍歷字典時,鍵—值對的返回順序也與儲存順序不同,Python不關心鍵—值對的儲存順序,而只跟蹤鍵和值之間的關聯關係。
6.3.2 遍歷字典中的所有鍵
在不需要使用字典中的值時,方法keys()很
有用。
#方法keys()遍歷字典中的所有鍵
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name.title())
遍歷字典時,會預設遍歷所有的鍵,因此,如果將上述程式碼中的for name in favorite_ languages.keys():
替換為for name in favorite_languages:
,輸出將不變。可以顯示的使用方法key(),也可以直接忽略。
在這種迴圈中,可以使用當前鍵來訪問與之相關聯的值:
#可以使用當前鍵來訪問與之相關聯的值
#列印兩條訊息指出朋友喜歡的語言
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() + "!")
#還可以使用keys()確定某個人是否接受了調查
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")
6.3.3 按順序遍歷字典中的所有值
要以特定的順序返回元素,一種辦法是在for迴圈中對返回的鍵進行排序,用函式sorted()
來獲得按特定順序排列的鍵列表的副本:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.key()):
print(name.title() + ", thank you for taking the poll.")
6.3.4 遍歷字典中的所有值 如果你感興趣的字典包含的值,可以使用方法values(),它返回一個值列表,但是不包含任何鍵。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The folloing languages have been mentioned:")
for language in favorite_languages..values():
print(language.title())
這樣的做法提取字典中所有的值,但是沒有考慮是否重複。可以使用集合(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())
通過對包含重複元素的列表呼叫set(),可讓Python找出列表中獨一無二的元素,並使用這些元素來建立一個集合。