Qual è il/modo più veloce one-liner per convertire un array come questo:Modo più veloce/one-liner per raccogliere duplicati in Ruby Array?
[1, 1, 1, 1, 2, 2, 3, 5, 5, 5, 8, 13, 21, 21, 21]
... in un array di oggetti come questo:
[{1 => 4}, {2 => 2}, {3 => 1}, {5 => 3}, {8 => 1}, {13 => 1}, {21 => 3}]
bello, questo è tutto! Grazie. –
Puoi pulirlo un po 'usando un hash con un valore predefinito: 'array.inject (Hash.new (0)) {| h, v | h [v] + = 1; h} .map {| k, v | {k => v}} ' – rampion
E per ottenerlo ordinato (come nell'esempio di domanda), aggiungi' .sort_by {| o | o.keys [0]} 'ad esso. * Ora * è disordinato. :) –