【问题标题】:Handle KeyError in Python在 Python 中处理 KeyError
【发布时间】:2021-10-18 11:49:45
【问题描述】:

我如何使用 if 处理 KeyError?根据错误,从不同的方式处理错误。

speed_uhc_team = counts_stats['games']['SPEED_UHC']['modes']['team_normal']
speed_uhc_solo = counts_stats['games']['SPEED_UHC']['modes']['solo_normal']

我想要的是,如果字典中不存在键 team_normal,则将我选择的值分配给该键。

但是当键team_normal存在时,只需分配键值即可。

【问题讨论】:

  • if 'team_normal' not in counts_stats['games']['SPEED_UHC']['modes'].keys():
  • 我不明白 - 你想在这两种情况下都分配一个值。那么有什么区别呢?
  • @Psytho 如果字典中不存在该值,则分配我选择的值

标签: python dictionary if-statement keyerror


【解决方案1】:

如果只有最后一个键可以不存在,可以使用get

speed_uhc_team = counts_stats['games']['SPEED_UHC']['modes'].get('team_normal',
                                                                 default_value)

如果你想挂起任何关键错误,你应该使用 try 块:

try:
    speed_uhc_team = counts_stats['games']['SPEED_UHC']['modes']['team_normal']
except KeyError:
    speed_uhc_team = default_value

【讨论】:

    【解决方案2】:

    只需检查密钥是否存在:

    if 'team_normal' not in counts_stats['games']['SPEED_UHC']['modes'].keys():
        speed_uhc_team = my_choice_value
        
    else:
        speed_uhc_team = counts_stats['games']['SPEED_UHC']['modes']['team_normal']
    

    【讨论】:

      【解决方案3】:

      应该这样做:

      d = { "team_solo": True}
      
      if "team_normal" in d:
          print("I found team_normal in d!")
      
      if "team_solo" in d:
          print("I found team_solo in d!")
      

      【讨论】:

        【解决方案4】:
        try:
          speed_uhc_team = counts_stats['games']['SPEED_UHC']['modes']['team_normal']
        except KeyError:
          speed_uhc_team = counts_stats['games']['SPEED_UHC']['modes']['other_key']
        

        【讨论】:

          猜你喜欢
          • 2020-12-23
          • 2016-09-19
          • 1970-01-01
          • 2014-04-10
          • 2015-12-11
          • 2011-07-02
          • 2012-11-16
          • 2021-05-16
          • 2017-12-08
          相关资源
          最近更新 更多