当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。