當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Dictionary fromkeys()用法及代碼示例


fromkeys() 方法使用用戶提供的值從給定的元素序列創建一個新字典。

用法:

dictionary.fromkeys(sequence[, value])

參數:

fromkeys() 方法有兩個參數:

  • sequence- 將用作新字典鍵的元素序列
  • 值(可選)- 為字典的每個元素設置的值

返回:

fromkeys() 方法返回一個以給定元素序列作為字典鍵的新字典。

如果設置了 value 參數,則新創建的字典的每個元素都設置為提供的值。

示例 1:從鍵序列創建字典

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }

vowels = dict.fromkeys(keys)
print(vowels)

輸出

{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}

示例 2:從具有值的鍵序列創建字典

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = 'vowel'

vowels = dict.fromkeys(keys, value)
print(vowels)

輸出

{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}

示例 3:從可變對象列表創建字典

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = [1]

vowels = dict.fromkeys(keys, value)
print(vowels)

# updating the value
value.append(2)
print(vowels)

輸出

{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
{'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2]}

如果 value 是可變對象(其值可以修改),如 listdictionary 等,則當修改可變對象時,序列的每個元素也會更新。

這是因為每個元素都被分配了對同一個對象的引用(指向內存中的同一個對象)。

為了避免這個問題,我們使用字典理解。

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = [1]

vowels = { key : list(value) for key in keys }
# you can also use { key : value[:] for key in keys }
print(vowels)

# updating the value
value.append(2)
print(vowels)

輸出

{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}

在這裏,對於 keys 中的每個鍵,都會創建一個來自 value 的新列表並將其分配給它。

本質上,value 沒有分配給元素,而是從中創建了一個新列表,然後將其分配給字典中的每個元素。

相關用法


注:本文由純淨天空篩選整理自 Python Dictionary fromkeys()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。