Хорошо, скажем, у меня такой массив, как [[z, 1], [d, 3], [e, 2]], как я могу отсортировать этот массив по второму элемент каждой составляющей матрицы? Чтобы мой массив выглядел следующим образом? [[z, 1], [e, 2], [d, 3]]?Сортировка двумерного массива по второму значению
ответ
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}
# => [[:z, 1], [:e, 2], [:d, 3]]
Или, как пользователь @Phrogz указывает, если внутренние массивы имеют ровно два элемента каждый:
arr.sort_by{|x,y|y} # => [[:z, 1], [:e, 2], [:d, 3]]
arr.sort_by(&:last) # => [[:z, 1], [:e, 2], [:d, 3]]
Или проще: 'arr.sort_by {| s, n | n} 'или даже' arr.sort_by (&: last) '(в Ruby 1.9). – Phrogz
'arr.sort_by (&: last)' работает в Ruby 1.8.7. –
@Phrogz Предпочитаете 'sort', потому что в ruby 2.4 (начиная с 2.0 или даже раньше)' sort_by' не существует, а только 'sort_by!' И [doc] (https://ruby-doc.org/ core-2.4.0/Array.html # method-i-sort_by-21) говорит, что: _The результат не гарантируется как стабильный. Когда два ключа равны, порядок соответствующих элементов непредсказуем. Поэтому для использования 'sort_by!' У вас должны быть ключи uniq. Итак, @maerics, пожалуйста, отредактируйте свое сообщение, чтобы сказать это или удалить 'sort_by'. – noraj
Как пользователь maerics ответить обеспечивает по возрастанию sorting.This Ответ очень полезно для меня спасибо. Для сортировались я использую -
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}.reverse
#=> [[:d, 3], [:e, 2], [:z, 1]]
Вы можете сохранить обратный вызов, просто сделав 'arr.sort {| a, b || b [1] <=> a [1]} '(обратите внимание на обратный порядок операндов оператора сравнения). – maerics
у вас есть опечатка в вашем коде, правильный код 'arr.sort {| a, b | b [1] <=> a [1]} '. вы слишком много вставили символ трубы – Fred
- 1. Сортировка 2D-массива по второму значению
- 2. сортировка двумерного двоичного массива
- 3. Сортировка двумерного массива по дате
- 4. Сортировка двумерного массива по строкам
- 5. Сортировка массива по значению
- 6. Сортировка массива по значению
- 7. Сортировка двумерного массива двумерного массива java
- 8. Сортировка двумерного массива двойников в C
- 9. Сортировка многомерного массива по значению
- 10. Сортировка массива по значению «цена»
- 11. Сортировка массива массивов по значению
- 12. Сортировка массива хэшей по значению
- 13. Сортировка вложенного массива по значению?
- 14. Сортировка массива по значению ключа
- 15. Сортировка массива PHP по значению
- 16. Сортировка массива по значению другого массива
- 17. Сортировка многомерного массива по значению массива
- 18. Сортировка списка <string[]> по второму значению (межд)
- 19. Сортировка dict по второму значению в кортеже и возврате dict
- 20. Сортировка массива по значению определенного ключа
- 21. Сортировка многомерного массива по значению размера
- 22. Сортировка ассоциативного массива по значению убывания
- 23. Сортировка массива с ключом по значению
- 24. Сортировка многомерного массива по внутреннему значению
- 25. Сортировка массива String по определенному значению String
- 26. Сортировка массива словарей по значению ключа
- 27. Сортировка mutidimensional сложного массива по значению
- 28. Сортировка многомерного массива php по значению
- 29. Сортировка массива по значению, то ключевой
- 30. Сортировка массива и дочерние массивы по значению
Обратите внимание, что это на самом деле массив массивов, а не 2-мерный массив. – Phrogz
Возможный дубликат [Сортировка коллекции объектов по числу (сначала по высоте), затем буквой (по алфавиту)] (http://stackoverflow.com/questions/2232470/sort-a-collection-of-objects-by-number- first-then-by-letter-alphabetic) –