Как отсортировать по номеру, по убыванию - PullRequest
2 голосов
/ 30 сентября 2019

Я очень простой кодер, пытающийся выяснить, как отсортировать эту строку в список по номеру, с которым они связаны. До сих пор я был в состоянии разделить строку «яблоки», но я не могу, чтобы сортированная функция возвращала число вместо второго символа. Как бы я пошел об изоляции чисел, чтобы отсортировать их? Важно, чтобы я использовал лямбда-функцию, которая вызывает функцию 'apple_sort'.

apples = "McIntosh:3,Red Delicious:5,Fuji:8,Gala:6,Ambrosia:7,Honeycrisp:7.5,Granny Smith:1"

def apple_sort(apple):
  return apple[1]

def sort_csv(x):
  x = (x.split(","))
  return sorted(x, key=apple_sort)
print(sort_csv(apples))

Мой ответ должен напечатать,

['Fuji:8', 'Honeycrisp:7.5', 'Ambrosia:7', 'Gala:6', 'Red Delicious:5', 'McIntosh:3', 'Granny Smith:1']

1 Ответ

3 голосов
/ 30 сентября 2019

Вместо этого можно использовать sorted со следующими key (обратите внимание, что числовые строки должны быть приведены к плавающему):

sorted(apples.split(','), key=lambda x: -float(x.split(':')[1]))

['Fuji:8',
 'Honeycrisp:7.5',
 'Ambrosia:7',
 'Gala:6',
 'Red Delicious:5',
 'McIntosh:3',
 'Granny Smith:1']

Первое необходимоешаг к split вышеупомянутой строке в список, который будет передан на sorted:

print(apples.split(','))
# ['McIntosh:3', 'Red Delicious:5', 'Fuji:8', 'Gala:6', 'Ambrosia:7', 
#   'Honeycrisp:7.5', 'Granny Smith:1']

Тогда вышеуказанный ключ, lambda x: -float(x.split(':')[1]) будет разделять внутренние строки на ':', затеминдексирование по второму элементу в результирующем списке и приведение к плавающей точке. Принимая отрицательный, порядок будет по убыванию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...