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

如何一行创建/更新Python字典键?能否用dict.setdefault()构建嵌套字典?

用一行代码创建/更新嵌套字典:dict.setdefault()的正确打开方式

当然可以用dict.setdefault()来替代你现在的if-else代码,而且能让逻辑更紧凑,一行就搞定!

先搞懂setdefault()的核心逻辑

dict.setdefault(key, default)做了两件事:

  • 如果key已经在字典里,直接返回对应的值;
  • 如果key不存在,就把key: default加入字典,然后返回这个default值。

刚好适配你嵌套字典的场景:我们可以先给外层字典的name键设置默认值(空字典),然后直接向内层字典添加/更新id: pin键值对。

替换你的if-else代码

原来的代码是这样的:

if name in my_dict:
    my_dict[name].update({ id : pin })
else:
    my_dict[name] = { id : pin }

用setdefault()可以简化成一行代码,两种写法任选:

写法1:直接赋值单个键值对(最简洁)

my_dict.setdefault(name, {})[id] = pin

解释:

  1. 先检查name是否在my_dict里,不在就创建my_dict[name] = {};
  2. 返回my_dict[name]对应的内层字典;
  3. 直接给内层字典的id键赋值pin,不管内层字典之前有没有这个键,都能完成创建/更新。

写法2:用update()批量添加(适合一次加多个键值对)

如果你需要一次性给同一个name添加多个id: pin,可以用update():

my_dict.setdefault(name, {}).update({id1: pin1, id2: pin2})

额外扩展:普通字典的创建/更新

如果是普通的非嵌套字典,要一行完成“键不存在就创建,存在就更新”,直接赋值就行:

my_dict[key] = value

但如果是要确保键存在时不覆盖,只在不存在时设置默认值,就用setdefault():

my_dict.setdefault(key, default_value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:52:32