当我们需要创建一个字典,且字典中的所有键都需要对应同一个初始的值时,我们可以使用Python中字典类的fromkeys()
方法来实现。
语法和参数
fromkeys()
方法的语法如下:
dict.fromkeys(seq[, value])
其中seq
为需要作为字典键的序列,value
为给所有键初始赋的值,如果省略则默认为None
。
示例说明
示例1:创建一个空字典,并为所有键赋初值0
result_dict = dict.fromkeys(['a', 'b', 'c'], 0)
print(result_dict)
运行结果如下:
{'a': 0, 'b': 0, 'c': 0}
在上述示例中,我们将['a', 'b', 'c']
作为字典的键序列,然后为所有键赋初始值0,最终得到了一个字典{'a': 0, 'b': 0, 'c': 0}
。
示例2:创建一个空字典,并为所有键赋初值为一个列表
result_dict = dict.fromkeys(['a', 'b', 'c'], [])
result_dict['a'].append(1)
print(result_dict)
运行结果如下:
{'a': [1], 'b': [1], 'c': [1]}
在上述示例中,我们将['a', 'b', 'c']
作为字典的键序列,然后为所有键赋初始值为一个空列表[]
,最终得到了一个字典{'a': [], 'b': [], 'c': []}
。接着我们对字典中某个键对应的列表进行了添加操作,结果会发现所有键都对应的列表进行了相同的添加操作。
这是因为,在Python中,赋值语句默认情况下只是让左边的变量指向右边的对象,而并没有创建新对象,因此在上述示例中,所有键共享一个列表对象。为了解决这个问题,我们可以对上述代码进行修改:
result_dict = dict.fromkeys(['a', 'b', 'c'], [])
result_dict['a'] = [1]
print(result_dict)
运行结果如下:
{'a': [1], 'b': [], 'c': []}
现在只有'a'
对应的列表中添加了1,而其他键对应的列表依旧为空。