如何在python中修复“ KeyError”,“字典”

时间:2019-07-06 00:20:56

标签: python python-2.7 dictionary

我正在做类似选举系统的作业,并且想要获取其他字典的字典元素。我应该在哪里更改代码?

这是我最新的python作业。我从没与字典合作过,现在却遇到了这个错误。

presidents = {}
senators = {}

regions = {}

for zone in zones:
    row = zone.strip().split(',')
    regions[row[0]] = {'region': row[1]}

for vote in votes:
    t_senators_votes = t_senators_votes + 2
    t_votes = t_votes + 1
    v_row = vote.strip().split(",")
    nombre_votante = v_row[0].strip()
    apellido_votante = v_row[1].strip()
    nombre_zona = v_row[2].strip()
    voto_presidente = v_row[3].strip()
    voto_senador1 = v_row[4].strip()
    voto_senador2 = v_row[5].strip()
    total_nulls = presidents[voto_presidente].get('total_nulls')
    total_votes = presidents[voto_presidente].get('total_votes')

    nombre = presidents[voto_presidente].get('nombre')
    zona = presidents[voto_presidente].get('zona')
    region = regions[zona].get('region')
    afiliacion = presidents[voto_presidente].get('afiliacion')
    tipo = presidents[voto_presidente].get('tipo')

    if presidents[voto_presidente].get('afiliacion') in political_parties:
        presidents[voto_presidente] = {'nombre': nombre,
                                   'zona': zona,
                                   'region': region,
                                   'afiliacion': afiliacion,
                                   'tipo': tipo,
                                   'total_votes': total_votes + 1,
                                   'total_nulls': total_nulls}

我希望在这一行中使用不带keyError''的var区域

region = regions[zona].get('region')

1 个答案:

答案 0 :(得分:0)

KeyError意味着您要让字典查找它不包含的键。查看任何引发异常的行(错误消息将包含行号),然后尝试转储字典的键以查看其包含的内容。

您的输入数据或设置字典的方式可能有问题。看来zona是从presidents获取的;如果您只是想在打印问题的同时立即克服错误,则可以执行以下操作:

if zona not in regions:
    print('WARNING: zone {0} not in regions dictionary'.format(zona))
    continue
region = regions[zona].get('region')

对于投票系统来说,这是一种糟糕的情况,因为某些选票不会被计算在内。更好的解决方案是清理您的输入数据,以确保在区域字典中定义了所有区域。该打印声明将帮助您发现所有缺失的条目,然后您可以确定输入数据或填充区域词典的方式是否存在差异