You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python现有字典添加无值(或统一值)的键列表?

给Python字典批量添加带默认值的键

假设我们有如下场景:需要给现有字典批量添加一组键,所有新键的默认值设为0:

new_keys_to_add = ['e', 'f', 'g', 'h']
my_dict = {'a':100, 'b':51, 'c':215}

你已经想到了两种实现方式:

  • 方式一:用update配合zip和列表推导

    my_dict.update(zip(new_keys_to_add, [0 for i in new_keys_to_add]))
    

    但这种方式会创建一个与new_keys_to_add长度一致的临时列表,你希望找到无需创建新列表的更优方案。

  • 方式二:通过循环逐个添加

    for i in new_keys_to_add:
        my_dict[i] = 0
    

    但你觉得应该有更简洁、避免显式循环的方法。


最优解决方案:使用dict.fromkeys()

Python内置的dict.fromkeys()方法专门用于生成以指定可迭代对象为键、带有统一默认值的字典,配合update方法可以完美解决你的需求:

my_dict.update(dict.fromkeys(new_keys_to_add, 0))

这个方法的优势

  • 无额外临时列表:dict.fromkeys()不会像列表推导那样生成额外的列表对象,内存利用更高效,尤其当键的数量较多时表现更明显。
  • 代码简洁直观:一行代码完成批量操作,语义清晰,能直接看出是给指定键设置统一默认值并更新原字典。
  • 执行效率更高:作为内置方法,dict.fromkeys()的底层实现基于C语言,比手动循环或列表推导+zip的方式速度更快。

注意点

如果你的默认值是可变对象(比如列表[]、字典{}),dict.fromkeys()会让所有键共享同一个对象引用——修改其中一个键的值会影响所有对应键。但在你的场景中使用的是不可变的0,因此不存在这个问题。

内容的提问来源于stack exchange,提问作者saba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:52:44