2016-03-20 4 views
1

У меня есть список строк, который создается путем объединения двух отдельных списков для создания строки. Список студентов:Как отсортировать список строк по наибольшему числу

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

Как сортировать его на самом высоком числовом значении, т.е.

['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) 

Это код, чтобы объединить два списка; Я не уверен, нужно ли это менять.

ответ

1

Попробуйте это:

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

print(student_list) 

или если вы не хотите, чтобы изменить первоначальный список:

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

print(sorted_student_list) 

Опять же, это, вероятно, имеет смысл объединить списки в список кортежи:

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

print(student_list) 

, а затем использовать key=lambda x: x[1] в вашем sort/sorted.

+0

это работает, но печатается как [('me', 9), ('you', 9), ('ее', 8), ('him', 7)]. Как сделать печать как ['me: 9', 'you: 9', 'her: 8', 'him: 7'], т.е. одна комбинированная строка – Eric1108

+0

Вы уже использовали ее как одну строку - в этом случае игнорируйте вторая половина моего ответа, начиная с «Then again ...» –

+1

используйте первый ключ 'key = лямбда x: int (x [-1])' –

Смежные вопросы