Ссылка на массив сортировки Perl

Итак, у меня есть этот код Perl:

$array->[0][0] = "cc";
$array->[0][1] = "3";
$array->[1][0] = "aaaa";
$array->[1][1] = "2";
$array->[2][0] = "bb";
$array->[2][1] = "1";

И мне нужно, чтобы он был отсортирован в алфавитном порядке (второй столбец), чтобы $ array -> [0] [0] было "aaaa", а $ array -> [0] [1] было "2"

Я, должно быть, спал во время «Программирования 101» в 90-х. Я потратил часы на поиск кода и учебных пособий в сети и просто не могу их получить. Может кто-нибудь предоставить мне образец кода, пожалуйста. Благодарность!

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
0
448
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Просто отсортируйте разыменованный массив по первому элементу:

$array = [ sort { $a->[0] cmp $b->[0] } @$array ];

или

@$array = sort { $a->[0] cmp $b->[0] } @$array;

Возврат:

[ [ 'aaaa', '2' ],
  [ 'bb',   '1' ],
  [ 'cc',   '3' ] ]

это здорово, спасибо @choroba - я использовал '<=>' вместо 'cmp'. работает отлично. Благодарность!

A-Kay 07.11.2018 16:18

Если вы можете подключиться к CPAN, используйте функцию sort_by, предоставляемую List::UtilsBy (или через List::AllUtils)

use List::AllUtils 'sort_by';
$array = [ sort_by { $_->[0] } @$array ];

... или, альтернативно, используя Sort::Key

use Sort::Key 'keysort';
$array = [ keysort { $_->[0] } @$array ];

Оба достигают одного и того же, но вам действительно стоит попробовать получить современную версию List::AllUtils, так как это избавит вас от необходимости изобретать множество колес.

Или @$array = ... @$array; вместо $array = [ ... @$array ];, чтобы не создавать новый массив

ikegami 07.11.2018 04:18

Другие вопросы по теме