【问题标题】:python v3.7 help on dictionarypython v3.7 字典帮助
【发布时间】:2018-11-06 23:15:22
【问题描述】:

当我测试测试用例并不断收到 KeyError 时,我遇到了这个问题,还有其他方法可以解决它吗? 所有文件都在共享的谷歌驱动器中。 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

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    从您的代码中不清楚您希望发生什么行为,因为我们看不到发生错误的测试。

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

    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{} 不起作用。

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 2010-11-14
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2021-02-08
      • 1970-01-01
      相关资源
      最近更新 更多