Python 字典推導式

Undefined443發表於2024-06-15

字典推導式(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. 簡單的字典推導式

    # 建立一個字典,其中鍵是 1 到 5 的數字,值是這些數字的平方
    squares = {x: x**2 for x in range(1, 6)}
    print(squares)
    # 輸出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
    
  2. 帶條件的字典推導式

    # 建立一個字典,其中鍵是 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}
    
  3. 從兩個列表建立字典

    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}
    
  4. 修改現有字典

    # 將現有字典的值全部平方
    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}
    
  5. 處理巢狀結構

    # 建立一個字典,其中鍵是數字,值是這些數字的平方,並且值大於 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}
    

相關文章