У меня есть список 2D (пример ниже), каждый элемент состоит из целого числа и строки. Я хочу отсортировать этот список так, чтобы числа были по убыванию, но когда есть последовательные идентичные числа, мне нужно, чтобы он сортировался по алфавиту.

myList = [[2, "hello"],[3, "world"]]
1
Anton Davidouski 27 Дек 2019 в 20:57
Теперь вы можете подумать о том, чтобы принять ответ или прокомментировать один, чтобы получить подробности;) чтобы вознаградить тех, кто потратил время на вас;)
 – 
azro
3 Янв 2020 в 18:24

2 ответа

Чтобы получить сортировку по нескольким критериям, вы можете указать tuple для параметра key. Здесь вы можете:

  1. посмотрите на число, используйте минус - для обратного порядка
  2. посмотрите на строку (если число равно)
myList.sort(key=lambda x: (-x[0], x[1]))

# equivalent
myList = sorted(myList, key=lambda x: (-x[0], x[1]))

Заявка

myList = [[2, "hello"], [3, "world"], [2, "hallo"]]
myList.sort(key=lambda x: (-x[0], x[1]))
print(myList)  # [[3, 'world'], [2, 'hallo'], [2, 'hello']]
3
azro 28 Дек 2019 в 00:57

Вам просто нужно сделать:

sorted(myList)
-1
Ultramoi 27 Дек 2019 в 21:01
Есть ли способ получить максимум, используя pandas Dataframe.eval вместо Dataframe.max?
 – 
Anton Davidouski
27 Дек 2019 в 21:02
1
Есть ли способ получить максимум на строку с помощью flutter upgrade?
 – 
Ultramoi
27 Дек 2019 в 21:03