呀,Python中居然還有字典推導式
在Python中,字典推導式(Dictionary Comprehension)是一種簡潔而強大的工具,用于從已有的可迭代對象(如列表、元組、集合或另一個字典)中快速創(chuàng)建新的字典。它采用類似于列表推導式的語法,但生成的結果是字典而非列表。字典推導式可以幫助我們編寫更加清晰、簡潔的代碼,特別是在需要對現(xiàn)有數(shù)據(jù)進行轉換或過濾時。
下面我們通過一些例子來看一下字典推導式的實際使用:
例1:從列表創(chuàng)建字典
假設我們有一個包含學生姓名和分數(shù)的列表,我們想要將其轉換為一個字典,其中姓名是鍵,分數(shù)是值。
# 原始數(shù)據(jù)
names = ['Alice', 'Bob', 'Charlie']
scores = [90, 85, 92]
# 使用字典推導式創(chuàng)建字典
student_scores = {name: score for name, score in zip(names, scores)}
print(student_scores)
# 輸出: {'Alice': 90, 'Bob': 85, 'Charlie': 92}
在這個例子中,zip(names, scores) 將姓名和分數(shù)配對,然后字典推導式遍歷這些對,并將每對中的第一個元素作為鍵,第二個元素作為值,構建新的字典。
例2:過濾字典中的項
假設我們有一個包含學生姓名和年齡的字典,我們想要創(chuàng)建一個新字典,其中只包含年齡大于20歲的學生。
# 原始數(shù)據(jù)
students = {
'Alice': 22,
'Bob': 19,
'Charlie': 23,
'David': 18
}
# 使用字典推導式過濾項
adults = {name: age for name, age in students.items() if age > 20}
print(adults)
# 輸出: {'Alice': 22, 'Charlie': 23}
在這個例子中,.items() 方法用于獲取字典的鍵值對,if age > 20 是一個條件表達式,用于過濾出年齡大于20歲的學生。
例3:字典值的轉換
如果我們要將上述學生年齡字典中的每個年齡都增加2歲,我們可以這樣做:
# 原始數(shù)據(jù)
students = {
'Alice': 22,
'Bob': 19,
'Charlie': 23,
'David': 18
}
# 使用字典推導式轉換值
students_aged = {name: age + 2 for name, age in students.items()}
print(students_aged)
# 輸出: {'Alice': 24, 'Bob': 21, 'Charlie': 25, 'David': 20}
在這個例子中,字典推導式遍歷字典的每一項,并將年齡值加2,然后構建新的字典。