J'essayais de trier un hachage particulier par des valeurs. Je suis tombé sur un chemin en utilisant la méthode sort_by
. Mais même si j'appelle sort_by
un hachage, elle retourne un tableau, à savoir:Tri d'un hachage par valeurs
a = {}
a[0] = "c"
a[1] = "b"
a[2] = "a"
a.sort_by{|key, value| value}
# => [[2, "a"], [1, "b"], [0, "c"]]
Si je tente de convertir le résultat en un hachage, je me retrouve avec un hachage triés sur clé, donc tout le but de sort_by
est perdu. i.e. .:
a = {}
a[0] = "c"
a[1] = "b"
a[2] = "a"
Hash[*a.sort_by{|key, value| value}.flatten]
# => {0=>"c", 1=>"b", 2=>"a"}
Est-il possible que je peux trier une table de hachage en valeur et obtenir encore les résultats de retour sous la forme d'un Hash?
EDIT: J'utilise 1.8.6 rubis
dupliquer http://stackoverflow.com/questions/2455011/sort-by-values-from-hash-table-ruby – toch
@toch Je ne pense pas que ce soit une question en double. La question se rapporte spécifiquement à la classification des valeurs. Mais ici, je veux retourner un résultat avec un hachage trié "sur" les valeurs. – Ricketyship
Pourquoi voulez-vous utiliser un hachage? –