字典推導式(Dictionary Comprehension)是 Python 中一種簡潔且高效的建立字典的方式。它類似於列表推導式,但用於生成字典。透過字典推導式,可以從一個可迭代物件(如列表或元組)中建立字典,並且可以在建立過程中應用條件或變換。
基本語法
my_dict = {key_expression: value_expression for item in iterable if condition}
有時也寫作這種形式:
my_dict = {
key_expression: value_expression
for item in iterable
if condition
}
key_expression
是新字典中的鍵表示式。value_expression
是新字典中的值表示式。item
是從iterable
中迭代出來的元素。iterable
是一個可迭代物件。condition
是一個可選的條件,用於過濾字典項。
示例
-
簡單的字典推導式
# 建立一個字典,其中鍵是 1 到 5 的數字,值是這些數字的平方 squares = {x: x**2 for x in range(1, 6)} print(squares) # 輸出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
-
帶條件的字典推導式
# 建立一個字典,其中鍵是 1 到 10 的數字,值是這些數字的平方,但只包括偶數 even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0} print(even_squares) # 輸出: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
-
從兩個列表建立字典
keys = ['a', 'b', 'c'] values = [1, 2, 3] my_dict = {k: v for k, v in zip(keys, values)} print(my_dict) # 輸出: {'a': 1, 'b': 2, 'c': 3}
-
修改現有字典
# 將現有字典的值全部平方 old_dict = {'a': 2, 'b': 3, 'c': 4} new_dict = {k: v**2 for k, v in old_dict.items()} print(new_dict) # 輸出: {'a': 4, 'b': 9, 'c': 16}
-
處理巢狀結構
# 建立一個字典,其中鍵是數字,值是這些數字的平方,並且值大於 10 nested_dict = {x: x**2 for x in range(1, 11) if x**2 > 10} print(nested_dict) # 輸出: {4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}