我目前有一个文本文件,其中包含使用我创建的测验的人的分数和名称。
鲍勃:8
露:5
约翰:2
鲍勃:6
克里斯:9
鲍勃:7
露:4
约翰:3
约翰:4
鲍勃:7
在Python中,我对如何打印列表中每个名称的最后三个分数感到困惑。比如,这应该打印鲍勃在他的名字旁边的7,7和6分,以及其他所有人的最后三分(当然,如果他们的分数少于三分,那么将会打印出来)。
我目前正在使用典型的方法解释该文件(可能不适合我的意图)。
x = open('Scores.txt', 'r')
答案 0 :(得分:2)
你可以在4个python的东西上谷歌(或者只读官方的python文档) - 例如文件,字符串,字典和列表,最后会有几行python代码来处理它。因为这对于学习一些python而言似乎是一项任务......
如果您真的想学习,请为您考虑最佳解决方案 - 只需分割任务并按步骤进行,例如:你需要:
scores['Bob'] == [8, 8, 7]
看起来很容易理解。很抱歉,因为没有提供我的~10行解决方案,但我认为学习某些东西的最好方法是自己学习它并对自己的成就(甚至是次要的)感到高兴,而不仅仅是复制其他代码。
答案 1 :(得分:1)
我将其分为两部分。
首先,这里是如何打印每个人的最后三个分数 数据集:
data = ['Bob:8', 'Lucy:5', 'John:2', 'Bob:6', 'Chris:9', 'Bob:7', 'Lucy:4',
'John:3', 'John:4', 'Bob:7']
d = {} # Create an empty dictionary.
for record in data:
x, y = record.split(':') # Splits each record on ':'.
try:
d[x].append(int(y)) # Append each value to a list in the dict by key, if it already exists...
except KeyError:
d[x] = [int(y),] # ...otherwise, create the list.
for k in d.keys():
print('%s: ' % k, end='') # Print the name.
for v in d[k][-3:]:
print('%d ' % v, end='') # Now print the last three values for each person.
print('')
为了从文件中读取它们,您只需将其包装在with
语句中:
with open('file.txt', 'r') as f:
d = {} # Create an empty dictionary.
for record in f:
x, y = record.split(':') # Splits each record on ':'.
try:
d[x].append(int(y)) # Append each value to a list in the dict by key, if it already exists...
except KeyError:
d[x] = [int(y),] # ...otherwise, create the list.
for k in d.keys():
print('%s: ' % k, end='') # Print the name.
for v in d[k][-3:]:
print('%d ' % v, end='') # Now print the last three values for each person.
print('')