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

Python中如何使用if语句处理KeyError 为不存在的字典键自定义赋值

解决方案

以下提供几种不同实现思路的方案,可根据你的实际需求选择:


方法1:使用dict.get()方法(最简便,不修改原字典)

如果不需要把默认值写入原字典,仅需要取数时缺省返回自定义值,直接用字典内置的get方法即可:

# 先提取公共的modes字典,避免重复写长路径
modes_dict = counts_stats['games']['SPEED_UHC']['modes']
speed_uhc_team = modes_dict.get('team_normal', 你的自定义默认值)
speed_uhc_solo = modes_dict.get('solo_normal', 你的自定义默认值)

请将代码中的你的自定义默认值替换为你实际需要设置的数值即可


方法2:使用dict.setdefault()方法(缺省时自动把默认值写入原字典)

如果需要当键不存在时,把自定义值存入原字典方便后续直接调用,用setdefault方法:

modes_dict = counts_stats['games']['SPEED_UHC']['modes']
speed_uhc_team = modes_dict.setdefault('team_normal', 你的自定义默认值)
speed_uhc_solo = modes_dict.setdefault('solo_normal', 你的自定义默认值)

方法3:if语句分情况判断(符合你提到的if分支处理需求)

modes_dict = counts_stats['games']['SPEED_UHC']['modes']
# 处理team_normal
if 'team_normal' in modes_dict:
    speed_uhc_team = modes_dict['team_normal']
else:
    speed_uhc_team = 你的自定义默认值
    # 若需要把默认值写入原字典就保留下面这行,不需要可以删除
    modes_dict['team_normal'] = speed_uhc_team

# 处理solo_normal逻辑同理
if 'solo_normal' in modes_dict:
    speed_uhc_solo = modes_dict['solo_normal']
else:
    speed_uhc_solo = 你的自定义默认值
    modes_dict['solo_normal'] = speed_uhc_solo

方法4:捕获KeyError异常实现

modes_dict = counts_stats['games']['SPEED_UHC']['modes']
try:
    speed_uhc_team = modes_dict['team_normal']
except KeyError:
    speed_uhc_team = 你的自定义默认值
    modes_dict['team_normal'] = speed_uhc_team

try:
    speed_uhc_solo = modes_dict['solo_normal']
except KeyError:
    speed_uhc_solo = 你的自定义默认值
    modes_dict['solo_normal'] = speed_uhc_solo

补充提示:如果你不确定上层路径games/SPEED_UHC/modes是否一定存在,可以用多层get避免上层键缺失抛出异常:
modes_dict = counts_stats.get('games', {}).get('SPEED_UHC', {}).get('modes', {})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:06:02