Ich habe eine Tabelle mit Informationen mit zwei Spalten; 'Name' und 'Score/10', gespeichert in einer CSV-Datei. Die cvs-Datei heißt "Jahr-1-Liste". Derzeit kann ich die Tabelle alphabetisch sortieren, basierend auf der Spalte "Name", so dass jeder Name mit der entsprechenden Punktzahl in alphabetischer Reihenfolge ausgegeben wird. Jetzt möchte ich in der Lage sein, die Tabelle basierend auf der Spalte "Score/10" nach der höchsten Punktzahl zuerst und der niedrigsten Punktzahl zuletzt zu sortieren. Kann mir jemand sagen, wie ich das mache? Muss ich die Spalte "Score/10" in eine Liste umwandeln? Mein Code ist wie folgt:Wie sortiere ich eine Spalte mit numerischen Werten in einer Tabelle aus einer CSV-Datei nach dem höchsten zum niedrigsten Wert?
print ("Do you wish to view previous class' results?")
option = input()
if option == ("yes"):
print ("Which class' results' do you wish to view; 1,2 or 3?")
viewyear = int(input())
if viewyear == 1:
print ("How do you want to view your results; alpha - alphabetically by name, av - mean score, desc - from highest to lowest?.")
viewoption = input()
if viewoption == ('alpha'):
with open("Year 1 List.csv", "r") as f:
for line in sorted(f):
print(line)
Vielen Dank im Voraus
wenn 'line' gedruckt wurde, brachte er einen Fehler zurück: "für Zeile in sortierter (f, key = Lambda-Linie: float (line.split (", ") [ 1])): ValueError: Konnte String nicht in Gleitkomma konvertieren: 'Score/10 \ n' "Wenn ich 'float' herausgenommen habe und die Daten vom niedrigsten zum höchsten Wert ausgegeben habe, würde ein Ergebnis von '10' gezählt werden als '1' in der Reihenfolge von der niedrigsten zur höchsten. Wie kann ich dies ändern a) am höchsten zum niedrigsten b) mit 10 als höchste Punktzahl eingestuft? @joran – MA00
Ich erkannte nicht, dass die Datei den Header-Text darin hatte ... Ich nahm an, dass alle Werte in der 2. Spalte floats waren –
'print next (f)'? Was meinst du damit? Dies überspringt den Header der 2. Spalte nicht. Momentan geht das in die 2. Spaltenüberschrift, aber es enthält es immer noch, wenn es versucht wird, es von String zu Float zu konvertieren - wie kann ich diesen Header überspringen? 'print next (f)' wird nicht funktionieren. Danke – MA00