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

如何将Dict1中符合条件的键值对添加至New_Dict?解决KeyError

解决字典筛选时的KeyError问题并正确构建新字典

首先,咱们来拆解你遇到的KeyError: 'Tokyo-Osaka'问题:当你检查key not in New_Dict时,直接去调用New_Dict[key].append(filtered),但此时这个key还没在New_Dict里创建呢!字典里根本没有这个键,自然没法对它调用append方法,这就是报错的根源。

接下来给你两种正确的实现方式,根据你的实际需求选就行:

方式一:直接存储符合条件的键值对(最常用)

如果你的需求只是把Dict1中符合条件的键值对原封不动搬到New_Dict,那不需要搞列表,直接赋值就好——毕竟原字典的key是唯一的,每个key对应一个符合条件的value:

# 假设这里你已经给Dict1填充了实际数据
Dict1 = {}
New_Dict = {}

# 注意缩进要正确,Python对缩进很严格
for key, value in Dict1.items():
    # 这里注意数值逻辑:如果是百分制的90分就写>=90,如果是0.9代表90%就保留>=0.90
    if value.Average >= 90:
        # 直接将键值对添加到新字典
        New_Dict[key] = value

print(New_Dict)

方式二:每个key对应一个值列表(适合后续需追加值的场景)

如果你确实需要让New_Dict的每个key对应一个列表(比如后续可能要给同一个key添加多个相关值),那得先给不存在的key初始化一个空列表,再执行append操作:

Dict1 = {}  # 已填充实际数据
New_Dict = {}

for key, value in Dict1.items():
    if value.Average >= 90:
        filtered = (key, value)
        # 先判断key是否存在,不存在就创建空列表
        if key not in New_Dict:
            New_Dict[key] = []
        # 现在可以安全地追加元素了
        New_Dict[key].append(filtered)

print(New_Dict)

另外提个小细节:你原代码里的for循环前面多了缩进,这在Python里会触发语法错误,一定要保证循环的缩进层级正确哦!还有value.Average的取值要确认是正确的数值类型,避免出现类型不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:31:14