我正在做类似选举系统的作业,并且想要获取其他字典的字典元素。我应该在哪里更改代码?
这是我最新的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')
答案 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')
对于投票系统来说,这是一种糟糕的情况,因为某些选票不会被计算在内。更好的解决方案是清理您的输入数据,以确保在区域字典中定义了所有区域。该打印声明将帮助您发现所有缺失的条目,然后您可以确定输入数据或填充区域词典的方式是否存在差异