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

如何按优先级更新字典列表中的字符串?代码遇KeyError求解决

问题修复:KeyError与输出不符合预期的解决办法

错误原因

  • 数据中的'N/A'未包含在priority_order的键集合中,执行priority_order[v]时触发KeyError。
  • 原代码将main赋值为优先级数值(如4),而非目标颜色字符串(如'Red'),不符合预期输出。

修复方案

方案1:将未知值映射为Undefined

通过dict.get()方法处理不存在的键,将'N/A'这类值的优先级等同于'Undefined',同时修正main的赋值逻辑:

data = [ { 'Pencil': 'Green' }, { 'Pen': 'N/A' }, { 'Scale': 'Red' }, { 'Compass': 'N/A'}]
priority_order = {'Red':4, 'Orange':3, 'Yellow':2, 'Green':1, 'Undefined': 0}
main = 'Undefined'

for each in data:
    for k, v in each.items():
        current_priority = priority_order.get(v, priority_order['Undefined'])
        if current_priority > priority_order[main]:
            main = v if v in priority_order else 'Undefined'

print(main)  # 输出:Red

方案2:直接跳过不在优先级列表中的值

如果不需要处理'N/A'这类值,直接跳过即可:

data = [ { 'Pencil': 'Green' }, { 'Pen': 'N/A' }, { 'Scale': 'Red' }, { 'Compass': 'N/A'}]
priority_order = {'Red':4, 'Orange':3, 'Yellow':2, 'Green':1, 'Undefined': 0}
main = 'Undefined'

for each in data:
    for k, v in each.items():
        if v not in priority_order:
            continue
        if priority_order[v] > priority_order[main]:
            main = v

print(main)  # 输出:Red

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:05:34