Python:读取文件并检查重复的字符串

时间:2015-11-11 10:00:56

标签: python dictionary

我的代码有点复杂,所以我先解释一下。基本上我正在尝试创建一个简单的算术游戏,用一个到十个随机数询问用户/学生10个问题。然后将这些数据(其名称和得分为10)以下列格式写入名为class_a.txt的文件中:

UITableView

然后我想回读class_a.txt。但是,当我读回它时,我需要存储在字典中读回的所有信息。我现在这样做:

Student_Name,7
Another_Person,5

在已经为读取操作打开class_a.txt文件之后调用函数的位置。并且已经定义了scores_content。但是,如果学生进行两次测验,那么文件可能如下所示:

def updateScores():
for line in fhandle:
    finder = line.find(",")
    newKey = line[0:finder]
    newValue = line[finder+1:len(line)-1]
    scores_content[newKey] = newValue

然后,当我回读并打印出字典时,它才会返回:

Student_A,6
Student_A,5

我不想在这种情况下返回密钥Student_A但是5和6都是值。

基本上我需要知道如何从文件中读回来,并且当出现重复的名称时,将两个分数作为值添加到字典中的键。这是我到目前为止所尝试的......

['Student_A':'5']

1 个答案:

答案 0 :(得分:0)

您需要将值存储在列表中,因为字典不能包含重复的键。

换句话说,您需要{'Student_A': [7,6], 'Student_B': [5]},请尝试这样做:

results = {} # this is an empty dictionary
with open('results.txt') as f:
   for line in f:
     if line.strip(): # this skips empty lines
        student,score = line.split(',')
        results.setdefault(student.strip(), []).append(int(score.strip()))

print(results) # or you can do this:
for student,scores in results.iteritems():
    print('Scores for: {}'.format(student))
    for score in scores:
        print('\t{}'.format(score))