Trier le hachage Ruby

Trier le hachage Ruby

Un hachage ou un dictionnaire (dans d'autres langages de programmation) fait référence à une structure de données qui stocke les données dans les paires de valeurs clés. Chaque clé d'un hachage doit être unique et peut être de n'importe quel type de données Ruby valide.

Les hachages sont incroyablement utiles et peuvent vous faire économiser beaucoup de temps et de code lorsqu'ils sont utilisés de manière appropriée. Bien qu'ils aient tendance à se comporter comme des tableaux, les hachages utilisent des clés uniques au lieu de positions entières. Considérez les hachages comme un vrai dictionnaire où chaque clé est unique et détient une signification ou une valeur correspondante.

Dans ce guide, nous apprendrons à trier un hachage en rubis en utilisant diverses méthodes. Non, nous n'utiliserons pas d'algorithmes de fantaisie ou de repères. Nous nous concentrerons sur les méthodes de tri rubis intégrées.

Ruby Hash - Les bases

Créer un hachage dans Ruby est très simple. Vous commencez par définir une clé suivie du symbole => et de la valeur. Nous enfermons les éléments dans un hachage dans une paire de bretelles bouclées.

"key" => "valeur"

Vous pouvez ajouter plusieurs paires de valeurs de clé en les séparant à l'aide de virgules:

"Ms" => "Massachusetts", "id" => "Idaho", "Ga" => "Georgia", "in" => "Indiana"

Ruby prend également en charge un autre format pour créer un hachage. Au lieu d'utiliser la notation de fusée =>, vous pouvez utiliser des colons.

"MS": "Massachusetts", "ID": "Idaho", "GA": "Géorgie", "dans": "Indiana"

Quelle que soit la méthode que vous utilisez pour créer un hachage de rubis, l'interprète Ruby les reconnaîtra comme des hachages valides.

Si vous souhaitez apprendre à travailler avec Ruby Hashs, considérez le tutoriel:

https: // linuxhint.com / comment utiliser-ruby-hashs /

Trier des hachages dans Ruby

Pour trier un hachage dans Ruby sans utiliser d'algorithmes personnalisés, nous utiliserons deux méthodes de tri: le tri et SORT_BY.

En utilisant les méthodes intégrées, nous pouvons trier les valeurs dans un hachage par divers paramètres.

Discutons:

#trier

La première méthode à utiliser lors du tri d'un hachage est la méthode de tri. La méthode de tri renvoie un tableau des valeurs triées. Il fonctionne en comparant les valeurs en utilisant l'opérateur.

Exemple 1

Considérez l'exemple de hachage ci-dessous:

State_info = "Massachusetts" => 78, "Idaho" => 72, "Géorgie" => 41, "Indiana" => 45
state_info.trier

Une fois que nous appelons la méthode de tri contre le hachage, il renverra les clés triées par ordre alphabétique.

[["Géorgie", 41], ["Idaho", 72], ["Indiana", 45], ["Massachusetts", 78]]

Vous remarquerez que le résultat du hachage trié est sous la forme d'un tableau multidimensionnel. Comme mentionné, la méthode de tri renvoie un tableau des valeurs triées.

Pour accéder aux paires de valeurs clés triées, vous pouvez utiliser la notation d'index.

trid_state = state_info.trier
trid_state [0]
["Géorgie", 41]

Exemple 2

Considérons un scénario où nous devons trier le hachage par les valeurs au lieu des clés.

Malheureusement, il n'y a pas de moyen direct de trier le hachage par les clés. Cependant, nous pouvons utiliser la méthode des valeurs pour récupérer les valeurs de hachage et les trier.

Jetez un œil à l'exemple ci-dessous:

state_info.valeurs.trier

Une fois que nous avons exécuté la commande ci-dessus, nous devons obtenir les valeurs du hachage trié au format de tableau.

[41, 45, 72, 78]

Exemple 3

Les valeurs de la méthode de tri sont de type de tableau. Nous pouvons les revenir à Hash en utilisant la méthode TO_H.

Regardez l'exemple ci-dessous:

State_info = "Massachusetts" => 78, "Idaho" => 72, "Géorgie" => 41, "Indiana" => 45
state_info.trier.to_h

L'exemple ci-dessus renverra le hachage trié comme:

"Georgia" => 41, "Idaho" => 72, "Indiana" => 45, "Massachusetts" => 78
#Trier par

Dans l'exemple 2, nous avons implémenté un moyen simple de trier le hachage par des valeurs. Cependant, il y a un seul inconvénient: nous ne triez que les clés et non les clés.

Pour résoudre ce problème, nous pouvons plonger dans l'utilisation de la méthode SORT_BY.

Exemple 1

Considérez le hachage State_info à partir des méthodes précédentes:

State_info = "Massachusetts" => 78, "Idaho" => 72, "Géorgie" => 41, "Indiana" => 45

En utilisant le tri par, nous pouvons effectuer l'opération suivante:

state_info.SORT_BY | K, V | v

Vous remarquerez que la méthode utilise des blocs Ruby pour trier les valeurs dans l'ordre spécifié. Vérifiez notre tutoriel sur Ruby Do pour en savoir plus.

La valeur résultante est:

[["Géorgie", 41], ["Indiana", 45], ["Idaho", 72], ["Massachusetts", 78]]

Donc +++ Rting des valeurs du tableau résultant est dans l'ordre croissant. Dans cet exemple, nous incluons à la fois les clés et leurs valeurs correspondantes.

De même, vous pouvez retourner le résultat en un hachage:

state_info.SORT_BY | K, V | v.to_h
"Georgia" => 41, "Indiana" => 45, "Idaho" => 72, "Massachusetts" => 78

Exemple 2

Par défaut, les méthodes de tri dans Ruby trieront par ordre croissant. Pour obtenir les valeurs triées dans l'ordre inverse, nous pouvons appeler la méthode #Reverse.

State_info = "Massachusetts" => 78, "Idaho" => 72, "Géorgie" => 41, "Indiana" => 45
state_info.SORT_BY | K, V | v.inverse
[["Massachusetts", 78], ["Idaho", 72], ["Indiana", 45], ["Géorgie", 41]]

Exemple 3

Supposons que nous ayons un hachage imbriqué. Comment trier les valeurs à l'intérieur du hachage imbriqué?

Considérez l'exemple suivant Hash:

états =
"Massachusetts" => "ab" => "ma", "fips_code" => 25,
"Idaho" => "ab" => "id", "fips_code" => 16,
"Géorgie" => "ABR" => "GA", "FIPS_CODE" => 13,
"Indiana" => "ab" => "in", "fips_code" => 18

Pour trier le hachage par les valeurs du hachage imbriqué, nous pouvons faire un sort_by comme indiqué:

États.SORT_BY | K, V | v ["fips_code"]

Les valeurs résultantes sont comme:

[["Georgia", "ABR" => "GA", "FIPS_CODE" => 13],
["Idaho", "ab" => "id", "fips_code" => 16],
["Indiana", "ab" => "in", "fips_code" => 18],
["Massachusetts", "ab" => "ma", "fips_code" => 25]]

Comme le montre cet exemple, les résultats impriment triés par ordre croissant des valeurs dans le hachage imbriqué.

Conclusion

En utilisant ce tutoriel, vous avez examiné comment utiliser les méthodes Sorme et Sort_By pour trier un hachage dans Ruby. En utilisant ce guide, vous pouvez écrire un code rubis court et plus efficace.