Sortieren Sie Hash Ruby

Sortieren Sie Hash Ruby

Ein Hash oder ein Wörterbuch (in anderen Programmiersprachen) bezieht sich auf eine Datenstruktur, die Daten in Schlüsselwertpaaren speichert. Jeder Schlüssel in einem Hash muss eindeutig sein und kann von jedem gültigen Ruby -Datentyp sein.

Hashes sind unglaublich nützlich und können Ihnen viel Zeit und Code sparen, wenn Sie angemessen verwendet werden. Obwohl sie dazu neigen, sich wie Arrays zu verhalten, verwenden Hashes einzigartige Schlüssel anstelle von ganzzahligen Positionen. Stellen Sie sich Hashes als ein echtes Wörterbuch vor, in dem jeder Schlüssel eindeutig ist und eine entsprechende Bedeutung oder einen entsprechenden Wert enthält.

In diesem Leitfaden lernen wir, wie man einen Hash in Ruby mit verschiedenen Methoden sortiert. Nein, wir werden keine ausgefallenen Algorithmen oder Benchmarks verwenden. Wir werden uns auf integrierte Ruby-Sortiermethoden konzentrieren.

Ruby Hash - die Grundlagen

Das Erstellen eines Hashs in Ruby ist sehr einfach. Sie beginnen zunächst einen Schlüssel, gefolgt vom Symbol => und dem Wert. Wir schließen Gegenstände in einem Hash in ein Paar lockiger Zahnspangen ein.

"Key" => "Wert"

Sie können mehrere Schlüsselwertpaare hinzufügen, indem Sie sie mit Commas trennen:

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

Ruby unterstützt auch ein anderes Format, um einen Hash zu erstellen. Anstatt Rocket Notation => zu verwenden, können Sie Colons verwenden.

"MS": "Massachusetts", "ID": "Idaho", "GA": "Georgia", "in": "Indiana"

Unabhängig davon, welche Methode Sie zum Erstellen eines Ruby -Hashs verwenden, erkennt der Ruby -Dolmetscher sie als gültigen Hashes.

Wenn Sie lernen möchten, wie man mit Ruby Hashes arbeitet, betrachten Sie das Tutorial:

https: // linuxHint.com/how-to-use-Ruby-Hashes/

Hashes in Ruby sortieren

Um einen Hash in Ruby zu sortieren, ohne benutzerdefinierte Algorithmen zu verwenden, verwenden wir zwei Sortiermethoden: die Sortierung und Sorte_By.

Mit den integrierten Methoden können wir die Werte in einem Hash nach verschiedenen Parametern sortieren.

Lassen Sie uns diskutieren:

#Sortieren

Die erste Methode, die beim Sortieren eines Hashs verwendet werden muss, ist die Sortiermethode. Die Sortiermethode gibt ein Array der sortierten Werte zurück. Es funktioniert, indem es die Werte mit dem Bediener verglichen.

Beispiel 1

Betrachten Sie den Beispiel für den Beispiel unten:

state_info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
STATE_INFO.Sortieren

Sobald wir die Sortiermethode gegen den Hash anrufen, wird die in alphabetischen Reihenfolge sortierten Schlüssel zurückgegeben.

[["Georgia", 41], ["Idaho", 72], ["Indiana", 45], ["Massachusetts", 78]]

Sie werden feststellen, dass das Ergebnis aus dem sortierten Hash in Form eines mehrdimensionalen Arrays ist. Wie bereits erwähnt, gibt die Sortiermethode ein Array der sortierten Werte zurück.

Um auf die sortierten Schlüsselwertpaare zuzugreifen, können Sie die Indexnotation verwenden.

sorted_state = state_info.Sortieren
sorted_state [0]
["Georgia", 41]

Beispiel 2

Betrachten wir ein Szenario, in dem wir den Hash nach den Werten anstelle der Schlüssel sortieren müssen.

Leider gibt es keinen direkten Weg, den Hash nach Schlüssel zu sortieren. Wir können jedoch die Wertemethode verwenden, um die Hash -Werte abzurufen und zu sortieren.

Schauen Sie sich das Beispiel unten an:

STATE_INFO.Werte.Sortieren

Sobald wir den obigen Befehl ausführen, sollten wir die Werte des Hash -Sortiers im Array -Format erhalten.

[41, 45, 72, 78]

Beispiel 3

Die Werte der Sortiermethode sind Array -Typen. Wir können sie mit der TO_H -Methode auf Hash umstellen.

Schauen Sie sich das folgende Beispiel an:

state_info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
STATE_INFO.Sortieren.to_h

Das obige Beispiel gibt den Hash sortiert nach:

"Georgia" => 41, "Idaho" => 72, "Indiana" => 45, "Massachusetts" => 78
#Sortieren nach

In Beispiel 2 haben wir eine einfache Möglichkeit implementiert, den Hash nach Werten zu sortieren. Es gibt jedoch einen Nachteil: Wir sortieren nur die Schlüssel und nicht die Schlüssel.

Um dies zu beheben, können wir die Methode Sort_by verwenden.

Beispiel 1

Betrachten Sie den State_info -Hash aus den vorherigen Methoden:

state_info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45

Mit Sortier können wir den folgenden Vorgang ausführen:

STATE_INFO.sort_by | k, v | v

Sie werden feststellen, dass die Methode Ruby -Blöcke verwendet, um die Werte in der angegebenen Reihenfolge zu sortieren. Überprüfen Sie unser Tutorial über Ruby Do, um mehr zu erfahren.

Der resultierende Wert ist:

[["Georgia", 41], ["Indiana", 45], ["Idaho", 72], ["Massachusetts", 78]]

Es ist also +++, die Werte aus dem resultierenden Array zu geben. In diesem Beispiel schließen wir sowohl die Schlüssel als auch ihre entsprechenden Werte ein.

In ähnlicher Weise können Sie das Ergebnis in einen Hash zurückversetzen:

STATE_INFO.sort_by | k, v | v.to_h
"Georgia" => 41, "Indiana" => 45, "Idaho" => 72, "Massachusetts" => 78

Beispiel 2

Standardmäßig werden die Sortiermethoden in Ruby nach aufsteigender Reihenfolge sortiert. Um die sortierten Werte in umgekehrter Reihenfolge zu erhalten, können wir die #Reverse -Methode aufrufen.

state_info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
STATE_INFO.sort_by | k, v | v.umkehren
[["Massachusetts", 78], ["Idaho", 72], ["Indiana", 45], ["Georgia", 41]]

Beispiel 3

Angenommen, wir haben einen verschachtelten Hash. Wie sortieren wir die Werte innerhalb des verschachtelten Hashs??

Betrachten Sie das folgende Beispiel Hash:

States =
"Massachusetts" => "ABR" => "MA", "fips_code" => 25,
"Idaho" => "ABR" => "ID", "fips_code" => 16,
"Georgia" => "ABR" => "GA", "fips_code" => 13,
"Indiana" => "ABR" => "in", "fips_code" => 18

Um den Hash nach den Werten des verschachtelten Hashs zu sortieren, können wir wie gezeigt einen Sort_by machen:

Zustände.sort_by | k, v | v ["fips_code"]

Die resultierenden Werte sind als:

[["Georgia", "Abr" => "GA", "fips_code" => 13],
["Idaho", "Abr" => "ID", "fips_code" => 16],
["Indiana", "Abr" => "in", "fips_code" => 18],
["Massachusetts", "ABR" => "MA", "fips_code" => 25]]

Wie dieses Beispiel zeigt, drucken die Ergebnisse in aufsteigender Reihenfolge der Werte im verschachtelten Hash sortiert aus.

Abschluss

Mit diesem Tutorial haben Sie sich angesehen, wie Sie die Sortier- und Sortiermethoden verwenden, um einen Hash in Ruby zu sortieren. Mit diesem Handbuch können Sie einen kurzen und effizienteren Ruby -Code schreiben.