Python fromkeys() 语法
fromkeys() 是字典的一个方法,它用于接收一个 序列(列表、元组或字符串)作为参数,然后通过该序列来创建一个新字典。
语法:
dict.fromkeys(keys, value)说明:
fromkeys() 方法接收以下 2 个参数。
keys(必选):任意可迭代对象(如列表、字典等)的键。value(可选):用于设置键的默认值,默认为 None。
dict.fromkeys(keys, value),简单来说就是:使用 keys 中元素作为字典的键,然后 value 作为字典所有键的值。
注意: fromkeys() 方法不会修改原字典,它总是创建一个全新的字典。
Python fromkeys() 摘要
| 使用频率 | 中 |
|---|---|
| 修改原字典 | 否 |
| 官方文档 | 查看 |
| 相关方法 | keys() |
Python fromkeys() 示例
接下来,我们通过几个简单的例子来讲解 Python fromkeys() 方法是如何使用的。
示例 1:fromkeys() 带 1 个参数
keys = ['a', 'b', 'c']
result = dict.fromkeys(keys)
print(result)运行结果如下。
{'a': None, 'b': None, 'c': None}分析:
dict.fromkeys(keys) 等价于 dict.fromkeys(keys, None)。如果将 dict.fromkeys(keys) 修改为 dict.fromkeys(keys, 666),再次运行后结果如下。
{'a': 666, 'b': 666, 'c': 666}示例 2:fromkeys() 带 2 个参数
lst1 = ['a', 'b', 'c']
lst2 = [10, 20,30]
result = dict.fromkeys(lst1, lst2)
print(result)运行结果如下。
{'a': [10, 20, 30], 'b': [10, 20, 30], 'c': [10, 20, 30]}分析:
dict.fromkeys(lst1, lst2) 表示使用 lst1 的元素作为字典的键,然后使用 lst2 的元素作为字典的值。
示例 3:fromkeys() 的可变默认值陷阱
keys = ['a', 'b', 'c']
# 使用空列表作为默认值
result = dict.fromkeys(keys, [])
# 尝试只向键 'a' 的列表中追加一个元素
result['a'].append(100)
print(result)运行结果如下。
{'a': [100], 'b': [100], 'c': [100]}分析:
从结果可以看出,这里我们明明只修改了 'a' 对应的值,但 'b' 和 'c' 的值也跟着改变了。这是因为 fromkeys() 在设置默认值时,所有键指向的都是内存中的 “同一个列表对象”。
如果需要为每个键创建独立的空列表,为了避免这个坑,建议使用字典推导式:
keys = ['a', 'b', 'c']
result = {k: [] for k in keys}