如何使用字典按字母顺序,按平均值,从最高到最低对文本文件中的结果进行排序?

时间:2016-03-10 11:39:39

标签: python sorting python-3.x dictionary

#Variable containing the users class
Classes = ["classa","classb","classc"]
#Creates a variable so the textfile for ClassA can be opened.
OpenA = open ("ClassA.txt","a")
#Creates a variable so the textfile for ClassB can be opened.
OpenB = open ("ClassB.txt","a")
#Creates a variable so the textfile for ClassC can be opened.
OpenC = open ("ClassC.txt","a")
while True:
        Class = input("What class' results would you like to see?(ClassA, ClassB or ClassC)")
        #User friendly accepts the users answer if it is in higher or lower case
        Class = Class.lower()
        #Checks if the class provided by the user is from the three classes which have been provided
        if Class.lower() in Classes:
            #Leaves the while loop if all the conditions have been met
            break
        else:
            #Tells the user that the class which they had inputed was not correct
            print("Invalid, please choose a class from the list provided!")
if Class.lower() == ("classa"):
    print("Showing results for ClassA")
elif Class.lower() == ("classb"):
    print("Showing results for class B")
else:
    print("Showing results for class C")

上面的代码是我到目前为止完成此任务所创建的代码。

我需要帮助的主要部分是创建字典,因为系统应存储每个学生的最后三个分数。然后,它还需要按字母顺序,从最高到最低和平均值对文本文件的结果进行排序。但是,我不知道如何做到这一点,特别是涉及词典时。 希望通过结果来解释,以确保我能够从中学习。

1 个答案:

答案 0 :(得分:0)

首先,尽量不要用大写字母开始变量名称(例如,OpenA应为openA)。其次,不要将Class用作变量名,因为它是用于声明新类的保留字。

关于排序词典的问题:如Devin Jeanpierre所述,这是不可能的。你最好使用dict的列表/排序表示。引用链接:

  

无法对dict进行排序,只能获得已排序的dict的表示形式。 Dicts本质上是无序的,但其他类型,如列表和元组,则不是。所以你需要一个排序表示,它将是一个列表 - 可能是一个元组列表。

但是如果必须使用字典,则可以使用字典的排序表示。这是sorted()函数的文档。

import operator
# dict initialization here, we'll call it dict1
result = sorted(dict1.items(), key=operator.itemgetter(1))

允许您对dict的值进行排序并将其存储在元组列表中。