Python 字典 dict.fromkeys() 方法



Python dictionary fromkeys() 方法用于从给定的可迭代对象作为键并使用用户提供的值创建新字典。这里的键可以是 set、tuple、string、list 或任何其他可迭代对象的形式,我们可以使用它们来创建字典。

Iterable 是一个可以迭代 (循环) 的对象。iterable 中的元素将是字典中的键。

语法

以下是 Python dictionary fromkeys() 方法的语法 -

dict.fromkeys(seq, [value])

参数

此方法接受两个参数,如下所示:

  • seq:序列是一个可迭代对象,它将使用键来形成一个新的字典。
  • value (可选):它是针对字典的每个键的值。如果未指定任何值,则其默认值为 None。

返回值

此方法返回一个新字典。

如果未提供字典的值,则此方法返回默认值 'None'。

以下示例显示了 Python dictionary fromkeys() 方法的用法。这里我们提供了键:'name'、'age' 和 ''。这些值未指定给提供的键。因此,使用 fromkeys() 方法将默认值 None 分配给每个键。


seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print ("New Dictionary : %s" % 	str(dict))

当我们运行上述程序时,它会产生以下结果——

New Dictionary : {'name': None, 'age': None, 'sex': None}

如果我们将一个值作为参数传递给此方法,它将对每个键返回相同的值。

现在,我们将值 '10' 作为参数传递给 fromkeys() 方法。因此,将针对字典的每个键指定此值。


seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
# providing a value 10
value = 10
dict = dict.fromkeys(seq, value)
print ("New Dictionary : %s" % 	str(dict))

以下是上述代码的输出 -

New Dictionary : {'name': 10, 'age': 10, 'sex': 10}

在下面的代码中,一个 list 被用作 dictionary 的值。可迭代列表是一个可变对象,这意味着它可以被修改。这里使用 append() 函数更新 list 值。然后,为键分配更新的值以及之前提供的值。这是因为每个元素都指向内存中的相同地址。


the_keys = {'b', 'c', 'd', 'f', 'g' }
# the list
value = [5]
consonants = dict.fromkeys(the_keys, value)
print('The consonants are: ', consonants)
# updating the value of the list
value.append(10)
print('The updated dictionary is: ',consonants)

上述代码的输出如下 -

The consonants are: {'c': [5], 'b': [5], 'f': [5], 'g': [5], 'd': [5]}
The updated dictionary is: {'c': [5, 10], 'b': [5, 10], 'f': [5, 10], 'g': [5, 10], 'd': [5, 10]}

在以下示例中,将创建一个字典,其中字符串用作键参数。因此,使用 fromkeys() 方法,字符串的每个字符都将充当结果字典中的键。值 'King' 分配给所有键。


Animal = 'Lion'
value = 'King'
print('The string value is: ', value)
d = dict.fromkeys(Animal, value)
print('The dictionary is: ', d)

在执行上述代码时,我们得到以下输出 -

The string value is: King
The dictionary is: {'L': 'King', 'i': 'King', 'o': 'King', 'n': 'King'}