#python #arrays #row
Вопрос:
Строки в 2D-массиве упорядочиваются в соответствии с числом «*» в каждой строке.
Пример:
Мой массив:
[['*', '-', '*', '*', '*', '*'],
['*', '-', '-', '*', '-', '-'],
['-', '*', '*', '-', '-', '-'],
['*', '-', '*', '*', '-', '-'],
['-', '-', '*', '*', '*', '*']]
Expected output:
[['*', '-', '*', '*', '*', '*'],
['-', '-', '*', '*', '*', '*'],
['*', '-', '*', '*', '-', '-'],
['*', '-', '-', '*', '-', '-'],
['-', '*', '*', '-', '-', '-']]
Строка с наибольшим количеством *
будет расположена первой, в то время как строка с наименьшим количеством -
будет расположена последней. Если строк одинаковое количество *
, сохраняется относительный порядок.
Комментарии:
1. Поскольку количество записей во внутреннем списке постоянно, наличие наибольшего числа * будет означать наименьшее количество -, Так что вы подразумеваете под строкой с наибольшим количеством*, которая будет расположена первой, в то время как строка с наименьшим количеством — будет расположена последней. Они, кажется, противоречат друг другу
Ответ №1:
Сортировка с помощью соответствующей ключевой функции будет выполнена:
array = [['*', '-', '*', '*', '*', '*'],
['*', '-', '-', '*', '-', '-'],
['-', '*', '*', '-', '-', '-'],
['*', '-', '*', '*', '-', '-'],
['-', '-', '*', '*', '*', '*']]
array.sort(key=lambda a: a.count('*'), reverse=True)
array
#[['*', '-', '*', '*', '*', '*'],
# ['-', '-', '*', '*', '*', '*'],
# ['*', '-', '*', '*', '-', '-'],
# ['*', '-', '-', '*', '-', '-'],
# ['-', '*', '*', '-', '-', '-']]