Python 字典 fromkeys() 方法

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}

上一篇: items()

下一篇: setdefault()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号