【问题标题】:Why am I gettng a KeyError when adding a key to a dictonary?为什么在向字典添加键时会出现 KeyError?
【发布时间】:2021-05-09 08:54:47
【问题描述】:

我仍在努力学习 Python 词典的来龙去脉。当我运行这个时:

#!/usr/bin/env python3
d = {}
d['foo']['bar'] = 1

我收到KeyError: 'foo'。但是在How can I add new keys to a dictionary? 中,它说“您通过为该键分配一个值来在字典上创建一个新的键\值对。如果该键不存在,则将其添加并指向该值。如果存在,则当前它指向的值被覆盖。”那么为什么我会收到关键错误?

【问题讨论】:

  • 你需要先做d['foo']={}
  • 您没有分配给d['foo']。您正在分配给d['foo']['bar'],这要求d['foo'] 已经存在。正如分配给e['bar'] 需要e 存在。

标签: python python-3.x dictionary key


【解决方案1】:

您需要先将 d['key'] 指定为字典

d['a']={}
d['a']['b']= value

【讨论】:

    【解决方案2】:

    你至少有两个选择:

    1. 按顺序创建嵌套字典:
    d = {}
    d['foo'] = {}
    d['foo']['bar'] = 1
    
    1. 使用collections.defaultdict,将默认工厂作为dict传递:
    from collections import defaultdict
    
    d = defaultdict(dict)
    d['foo']['bar'] = 1
    

    【讨论】:

    • 谢谢大家。我想是这样的。我在 Perl 中编写大部分脚本,您可以在其中即时执行类似的操作。太棒了。
    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多