Ok, ad esempio, ho un array come [[z, 1], [d, 3], [e, 2]], come posso ordinare questo array per il secondo elemento di ciascun array costituente? In modo che il mio array sarebbe simile al seguente? [[z, 1], [e, 2], [d, 3]]?Ordinamento di una matrice bidimensionale per il secondo valore
risposta
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}
# => [[:z, 1], [:e, 2], [:d, 3]]
O come utente @Phrogz sottolinea, se le matrici interne hanno esattamente due elementi ciascuno:
arr.sort_by{|x,y|y} # => [[:z, 1], [:e, 2], [:d, 3]]
arr.sort_by(&:last) # => [[:z, 1], [:e, 2], [:d, 3]]
o più semplicemente: 'arr.sort_by {| s, n | n} 'o anche' arr.sort_by (&: last) '(in Ruby 1.9). – Phrogz
'arr.sort_by (&: last)' funziona anche in Ruby 1.8.7. –
@Phrogz Preferisci "ordinamento" perché in ruby 2.4 (dal 2.0 in effetti o anche prima) 'sort_by' non esiste ma solo' sort_by! 'E il [doc] (https://ruby-doc.org/ core-2.4.0/Array.html # method-i-sort_by-21) dice che: _Il risultato non è garantito come stabile. Quando due chiavi sono uguali, l'ordine degli elementi corrispondenti è imprevedibile. Quindi per poter usare 'sort_by!' Devi avere le chiavi uniq. Quindi @maerics si prega di modificare il tuo post per dire che o rimuovere 'sort_by'. – noraj
Come maerics utente risposta fornisce Crescente sorting.This risposta è molto utile per me, grazie. Per Discendente classificare i uso -
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}.reverse
#=> [[:d, 3], [:e, 2], [:z, 1]]
È possibile salvare la chiamata "inversa" semplicemente facendo 'arr.sort {| a, b || b [1] <=> a [1]} '(notare l'ordine inverso degli operandi dell'operatore di confronto). – maerics
hai un errore di battitura nel tuo codice, il codice corretto è 'arr.sort {| a, b | b [1] <=> a [1]} '. hai inserito un carattere di pipe troppo – Fred
- 1. Come convertire matrice bidimensionale ad una matrice bidimensionale in PHP5
- 2. Riferimento a una matrice bidimensionale
- 3. ordinamento intera matrice secondo una colonna in MATLAB
- 4. Matrice bidimensionale di diversi tipi
- 5. Come filtrare una matrice bidimensionale in base al valore
- 6. inizializzazione di una matrice bidimensionale di stringhe
- 7. C# assegnano 1 matrice bidimensionale di sintassi 2 matrice bidimensionale
- 8. stampa di una matrice bidimensionale in python
- 9. Ordine di ordinamento MySQL per valore di matrice
- 10. ordinamento PHP array_intersect_key() risultati per secondo array
- 11. Matrice bidimensionale in python
- 12. Come stampare una matrice bidimensionale Perl?
- 13. matrice bidimensionale utilizzando i modelli
- 14. Ordinamento di una matrice di oggetti SimpleXML
- 15. Array e Split comandi per creare una matrice bidimensionale 2
- 16. usando array_search multi matrice bidimensionale
- 17. C: Dimensioni della matrice bidimensionale
- 18. Ordinamento di una matrice 2D binaria?
- 19. Ordinamento di una matrice alfabeticamente in rapido
- 20. Come implementare una matrice bidimensionale di struct in C
- 21. PHP Funzione di ordinamento per ordinare una matrice di oggetti
- 22. Ordinamento di un array bidimensionale 2 in c
- 23. a più array bidimensionale di ordinamento da stringa
- 24. Trovare la posizione di un elemento in una matrice bidimensionale?
- 25. Ordinamento lista per valore
- 26. ordinamento matrice di dimensioni n
- 27. Ordinamento una lista di liste per lunghezza e per valore
- 28. Ordinamento della matrice di oggetti usando il metodo di ordinamento del carattere di sottolineatura
- 29. Come si cerca una matrice bidimensionale in qualsiasi direzione
- 30. C++ colata statica a doppia matrice bidimensionale di raddoppiare **
noti che questo è davvero un array di array, non una matrice 2-dimensionale. – Phrogz
possibile duplicato di [Ordinare una raccolta di oggetti per numero (prima il più alto) poi per lettera (in ordine alfabetico)] (http://stackoverflow.com/questions/2232470/sort-a-collection-of-objects-by-number- lettere maiuscole e minuscole) –