我遇到了问题,我希望程序只显示列表中每个人的最高分。在文本文件中,有3个人的名字,例如汤姆,詹姆斯和戴夫,还有分数,所以看起来会像这样。
Tom,9
Tom,8
Tom,2
James,9
James,4
James,0
我希望程序按字母顺序显示该人的最高分。下面是我得到的程序,但我只能按照降序打印出最高分,并显示所有分数,而不仅仅是该人的最高分。
def alpha():
n = 0
fo = open("class1.txt" , "r")
ab = fo.readlines()
y = len(ab)
list1 = []
for y in range(0,y):
a = ab.pop()
number = a.split(",")
b = number.pop()
b = int(b)
list1.extend([(number,b)])
list1.sort(key=lambda list1: list1[1], reverse = True)
print(list1)
alpha()
如果你能提供帮助,那就太好了。 感谢。
答案 0 :(得分:0)
dict
显然属于这种情况。
读入每个名字,看看它是否已经在你的词典中;设置dictionary[name] = b
if {且仅当} name
尚未出现在字典中,或者b
大于字典中已有的内容。
打印输出排序就像
一样简单for name in sorted(dictionary.keys(), reverse=True):
print name, dictionary[name]
(虽然有一百万种方法可以实现这一目标)
答案 1 :(得分:0)
请尝试以下代码:
with open('file.txt', 'r') as f:
values = f.read().split()
scores = {}
for item in values:
item = item.split(',')
if item[0] in scores.keys():
scores[item[0]].append(item[1])
else:
scores[item[0]] = [item[1]]
high_scores = [[key, max(scores[key])] for key in scores.keys()]
high_scores.sort()
for item in high_scores:
print "{}: {}".format(item[0], item[1])
James: 9
Tom: 9
>>>