字典中的python v3.7帮助

时间:2018-11-06 01:31:38

标签: python-3.x

当我测试测试用例并不断收到KeyError时,我陷入了这个问题,还有另一种解决方法吗? 所有文件都在共享的Google驱动器中。 https://drive.google.com/drive/folders/1OqrHxY42Cka9_H9pfA9VLQOkIuqoSQKN?usp=sharing

代码:

import csv
def read_votes(filename):
        rows = []
        columns = []

        try: 
                with open(filename, 'r') as file:
                        csvreader = csv.reader(file)
                        column = next(csvreader)
                        for row in csvreader:
                                row.append(row)
                dict{}
                vote_dbase = {}
                for row in rows:
                        state = row[0]
                        candidate = (row[1], row[2], row[3], row[4]) 
                        if int(row[3]) > 0:
                                if state in vote_dbase:
                                        flag = 0
                                        for i in range(len(vote_dbase[state])):
                                                if row[1] < vote_dbase[state][i][0]:
                                                        vote_dbase[state].insert(i, candidate)
                                                        flag = 1
                                                        break
                                        if flag == 0:
                                                vote_dbase[state].append(candidate)
                                else:
                                        vote_dbase[state] = [candidate]

                return vote_dbase
        except:
                return False

Fail case with KeyError

1 个答案:

答案 0 :(得分:0)

由于您看不到发生错误的测试,因此您的代码中尚不清楚您希望发生什么行为。

也就是说,进行一些基本的调试,似乎您没有正确处理输入值。问题出在

for row in csvreader:
    row.append(row)

您将row附加到自身而不是列表rows。我想你想

for row in csvreader:
    rows.append(row)

我还建议不要将所有内容放入try块,并且不要对异常进行任何处理。这意味着您可能会遇到错误,并且不会收到错误消息,该消息将帮助您调试代码。不要使用try块或对异常块执行以下操作:

except Exception as exception_instance:
    print(exception_instance)
    return False

您的代码中还有一个随机的dict{},这是行不通的。