【问题标题】:Python adding elements to dict and to defaultdict [closed]Python将元素添加到dict和defaultdict [关闭]
【发布时间】:2014-10-21 00:19:57
【问题描述】:

有普通的dict:

ordinarydict = {}
ordinarydict['somekey']
print ordinarydict

我会得到一个错误。 KeyError "somekey" 这是预期的行为。

所以,有defaultdict:

from collections import defaultdict
d = defaultdict(int)
d['somekey']
print d

>>> defaultdict(<type 'int'>, {'somekey': 0})

我没有在字典中添加任何东西,我只是用无效键调用字典。但现在新元素已添加到 defaultdict。

【问题讨论】:

  • ...因为这正是defaultdict 的用途? docs.python.org/2/library/…
  • PS:“有人可以解释下一件事情吗?”:这个网站不是一个接一个地阅读消息,我们不知道“最后一件事”是什么。每个问题都独立于所有其他问题。
  • 你试过查看the docs for defaultdict吗?或者在交互式解释器中输入help(defaultdict)?一般来说,人们苦苦阅读的文档比你要求某人一时冲动写下的文档更具可读性。如果您已阅读文档并且无法理解某些内容,那么您有一个特定的问题要问(可能还有要提交的文档错误报告)。

标签: python python-2.7 dictionary


【解决方案1】:

因为defaultdict 默认将缺少的键添加到字典中,如source 中所示。

docs 中也记录了此行为:

如果 default_factory 不为 None,则在不带参数的情况下调用它以为给定键提供默认值,该值插入到键的字典中,并返回。

【讨论】:

    【解决方案2】:

    这就是 defaultdict 的重点:你构造一个带有可调用对象(在本例中为 int),当访问一个不存在的键时,它会调用它(生成 0),并将其插入字典。它会在您访问它们时自动创建密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多