【问题标题】:python-How to solve KeyError: 2?python-如何解决KeyError:2?
【发布时间】:2016-05-25 06:49:06
【问题描述】:

我有一个格式为{int:[]}的字典

当我尝试将值设置为值列表为 NULL 的键值对时,我得到了KeyError: 2

tags = {}
tags.setdefault(int,[])
for tag_id in (db.session.query(PostTagRel).filter(PostTagRel.id == post_id).first().tag_id.split(',')):
            tag = db.session.query(Tag).filter(Tag.tag_id == tag_id).first().tag_name
            tags[post_id].append(tag)

我该怎么办?

【问题讨论】:

  • setdefault 设置具体键的默认值,而不是键的类型。 defaultdict 可能会满足您的目的:from collections import defaultdict d = defaultdict(lambda: [])
  • 首先,您不应该重新定义保留名称,如dict,因为您将无法进一步使用原始对象。二、dict.[0].append(1)在语法上无效
  • 请编辑您的问题以显示您使用的实际代码和回溯。
  • @schwobaseggl:或者只是d = defaultdict(list):不需要lambda
  • @MarkDickinson 啊,这更直观。谢谢!

标签: python dictionary keyerror


【解决方案1】:

为了给所有键设置一个通用的默认值,你可以使用defaultdict

from collections import defaultdict

d = defaultdict(list)    
d[0].append(1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多