【问题标题】:KeyError received when it is never expected意外收到 KeyError
【发布时间】:2014-04-08 14:56:52
【问题描述】:

当我分配line_to_be_added 变量时,我得到一个KeyError。可能是什么原因?

for key in PL_HASH_ON_FIRST_TWO_PARTS.keys():
    total_count=0
    print key, '\n'
    for pl_name in sorted(PL_HASH_ON_FIRST_TWO_PARTS[key]):
        print pl_name,'\n'
        count = PL_DICT_COUNT[pl_name]
        plTable = plTable + "<tr><td>%s</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td></tr>"%(pl_name, PL_NAME_DICT[pl_name][last_six_months[7]], PL_NAME_DICT[pl_name][last_six_months[6]], PL_NAME_DICT[pl_name][last_six_months[5]], PL_NAME_DICT[pl_name][last_six_months[4]], PL_NAME_DICT[pl_name][last_six_months[3]], PL_NAME_DICT[pl_name][last_six_months[2]], PL_NAME_DICT[pl_name][last_six_months[1]], PL_NAME_DICT[pl_name][last_six_months[0]], count)
        if key in count_bag_wise:
            for i in range(0,7):
                print last_six_months[i],'\n'
                count_bag_wise[key][last_six_months[i]]+=PL_NAME_DICT[pl_name][last_six_months[i]]
        else:
            count_bag_wise[key]=dict()
            for i in range(0,7):
                count_bag_wise[key][last_six_months[i]]=0
                count_bag_wise[key][last_six_months[i]]+=PL_NAME_DICT[pl_name][last_six_months[i]]
        TOTAL_COUNT += count
        total_count += count
    line_to_be_added="<tr><td>%s</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td></tr>"%(pl_name.split('.')[0]+'.'+pl_name.split('.')[1]+'.*', count_bag_wise[key][last_six_months[7]],count_bag_wise[key][last_six_months[6]], count_bag_wise[key][last_six_months[5]],count_bag_wise[key][last_six_months[4]],count_bag_wise[key][last_six_months[3]], count_bag_wise[key][last_six_months[2]],count_bag_wise[key][last_six_months[1]],count_bag_wise[key][last_six_months[0]], total_count)
    print line_to_be_added
    plTable = plTable +line_to_be_added

【问题讨论】:

  • ALCAPS 标题收到为大喊大叫。请不要那样做。
  • 请同时修正缩进:每级四个空格,请不要使用制表符。
  • 对于触发异常的key 的特定值,PL_HASH_ON_FIRST_TWO_PARTS 包含什么?很可能这是一个空列表,ergo count_bag_wise[key] 永远不会设置。

标签: python dictionary hashmap


【解决方案1】:

您永远不会设置last_six_months[7] 键:

for i in range(0,7):
    count_bag_wise[key][last_six_months[i]]=0
    count_bag_wise[key][last_six_months[i]]+=PL_NAME_DICT[pl_name][last_six_months[i]]

范围包括7(结束值是唯一的)。

但是您的line_to_be_added 代码使用:

count_bag_wise[key][last_six_months[7]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多