2016-03-20 10 views
1

Ich habe eine Liste von Strings, die durch die Kombination von zwei separaten Listen gemacht wird, um eine Zeichenfolge zu machen. Die Schülerliste ist:Wie sortiere ich eine Liste von Strings nach der höchsten Nummer

['me: 9', 'him: 7', 'you: 9', 'her: 8'].

Wie ich es sortiere auf höchsten numerischen Wert, das heißt

['me: 9', 'you: 9', 'her: 8','him: 7']

student_list = [] 
for x, y in zip(files, scores): 
    student_result = (x + ": " + y) 
    student_list.append(student_result) 

Dies ist der Code die beiden Listen zu kombinieren; Ich bin mir nicht sicher, ob das geändert werden muss.

Antwort

1

Versuchen Sie folgendes:

student_list.sort(key=lambda x: int(x[-1]), reverse=True) 

print(student_list) 

oder wenn Sie wollen nicht die ursprüngliche Liste ändern:

sorted_student_list = sorted(student_list, key=lambda x: int(x[-1]), reverse=True) 

print(sorted_student_list) 

Dann wieder, macht es wahrscheinlich mehr Sinn, die Listen in eine Liste von kombinieren Tupel:

student_list = [] 
for x, y in zip(files, scores): 
    student_result = (x, int(y)) 
    student_list.append(student_result) 

print(student_list) 

und verwenden key=lambda x: x[1] dann in Ihrem sort/sorted Funktion.

+0

das funktioniert, aber es druckt als [('me', 9), ('Sie', 9), ('ihr', 8), ('er', 7)]. Wie mache ich Druck als ['me: 9', 'you: 9', 'her: 8', 'er: 7'], dh eine kombinierte Zeichenkette – Eric1108

+0

Sie hatten es bereits als eine Zeichenkette - in diesem Fall ignorieren Sie die zweite Hälfte meiner Antwort beginnend mit "Dann wieder ..." –

+1

Verwenden Sie den ersten Schlüssel 'key = Lambda x: int (x [-1])' –

Verwandte Themen