如何只显示列表中一个值的一个值

时间:2015-02-04 16:47:03

标签: python text-files

我遇到了问题,我希望程序只显示列表中每个人的最高分。在文本文件中,有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()

如果你能提供帮助,那就太好了。 感谢。

2 个答案:

答案 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
>>>