Ordina Hash Ruby

Ordina Hash Ruby

Un hash o un dizionario (in altri linguaggi di programmazione) si riferisce a una struttura di dati che memorizza i dati in coppie di valore chiave. Ogni chiave in un hash deve essere unica e può essere di qualsiasi tipo di dati Ruby valido.

Gli hash sono incredibilmente utili e possono farti risparmiare molto tempo e codice se usato in modo appropriato. Sebbene tendano a comportarsi come array, gli hash usano chiavi uniche anziché posizioni interi. Pensa agli hash come un dizionario reale in cui ogni chiave è unica e contiene un significato o un valore corrispondente.

In questa guida, impareremo come ordinare un hash in Ruby usando vari metodi. No, non useremo algoritmi o parametri di riferimento fantasiosi. Ci concentreremo su metodi di smistamento di rubini integrati.

Ruby Hash - Le basi

Creare un hash in Ruby è molto semplice. Si inizia definendo una chiave seguita dal simbolo => e dal valore. Alleghiamo gli oggetti in un hash in una coppia di bretelle.

"key" => "valore"

È possibile aggiungere più coppie di valore chiave separandole usando virgole:

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

Ruby supporta anche un altro formato per creare un hash. Invece di usare Rocket Notation =>, puoi usare i due punti.

"MS": "Massachusetts", "id": "Idaho", "GA": "Georgia", "In": "Indiana"

Indipendentemente dal metodo che usi per creare un hash di rubino, l'interprete di Ruby li riconoscerà come hash validi.

Se desideri imparare a lavorare con gli hash di Ruby, considera il tutorial:

https: // linuxhint.com/How-to-us-ruby-Hashs/

Sortendo gli hash in Ruby

Per ordinare un hash in Ruby senza usare algoritmi personalizzati, useremo due metodi di smistamento: Ordine e Ordine_By.

Usando i metodi integrati, possiamo ordinare i valori in un hash per vari parametri.

Discutiamo:

#ordinare

Il primo metodo da utilizzare durante l'ordinamento di un hash è il metodo di ordinamento. Il metodo di ordinamento restituisce un array dei valori ordinati. Funziona confrontando i valori utilizzando l'operatore.

Esempio 1

Considera l'esempio di hash di seguito:

State_Info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
State_info.ordinare

Una volta che chiamiamo il metodo di ordinamento contro l'hash, restituirà le chiavi ordinate in ordine alfabetico.

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

Noterai che il risultato dall'hash ordinato è sotto forma di un array multidimensionale. Come accennato, il metodo di ordinamento restituisce un array dei valori ordinati.

Per accedere alle coppie di valore chiave ordinato, è possibile utilizzare la notazione indice.

Sorted_State = State_Info.ordinare
Sorted_state [0]
["Georgia", 41]

Esempio 2

Consideriamo uno scenario in cui dobbiamo ordinare l'hash dai valori anziché le chiavi.

Sfortunatamente, non esiste un modo diretto per ordinare l'hash per chiavi. Tuttavia, possiamo usare il metodo dei valori per recuperare i valori di hash e ordinarli.

Dai un'occhiata all'esempio seguente:

State_info.valori.ordinare

Una volta eseguito il comando sopra, dovremmo ottenere i valori dell'hash ordinato in formato array.

[41, 45, 72, 78]

Esempio 3

I valori del metodo di ordinamento sono di tipo array. Possiamo tornare all'hash utilizzando il metodo TO_H.

Guarda l'esempio seguente:

State_Info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
State_info.ordinare.to_h

L'esempio sopra restituirà l'hash ordinato come:

"Georgia" => 41, "Idaho" => 72, "Indiana" => 45, "Massachusetts" => 78
#ordina per

Nell'esempio 2, abbiamo implementato un modo semplice per ordinare l'hash per valori. Tuttavia, c'è uno svantaggio: ordiniamo solo le chiavi e non le chiavi.

Per risolverlo, possiamo immergerci nell'uso del metodo Sort_By.

Esempio 1

Considera l'hash statale_info dai metodi precedenti:

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

Usando Ordy by, possiamo eseguire la seguente operazione:

State_info.sort_by | k, v | v

Noterai che il metodo utilizza i blocchi ruby ​​per ordinare i valori nell'ordine specificato. Controlla il nostro tutorial su Ruby Do per saperne di più.

Il valore risultante è:

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

Quindi +++ ring dei valori dall'array risultante è in ordine crescente. In questo esempio, includiamo sia le chiavi che i loro valori corrispondenti.

Allo stesso modo, puoi ripristinare il risultato a un hash:

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

Esempio 2

Per impostazione predefinita, i metodi di ordinamento in Ruby ordinano per ordine crescente. Per ottenere i valori ordinati in ordine inverso, possiamo chiamare il metodo #Reverse.

State_Info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
State_info.sort_by | k, v | v.inversione
[["Massachusetts", 78], ["Idaho", 72], ["Indiana", 45], ["Georgia", 41]]

Esempio 3

Supponiamo di avere un hash nidificato. Come ordiniamo i valori all'interno dell'hash nidificato?

Considera il seguente hash di esempio:

Stati =
"Massachusetts" => "ABR" => "MA", "FIPS_CODE" => 25,
"Idaho" => "ABR" => "ID", "FIPS_CODE" => 16,
"Georgia" => "ABR" => "GA", "FIPS_CODE" => 13,
"Indiana" => "Abr" => "in", "Fips_Code" => 18

Per ordinare l'hash per i valori dell'hash nidificato, possiamo fare un sort_by come mostrato:

stati.sort_by | k, v | v ["fips_code"]

I valori risultanti sono come:

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

Come mostra questo esempio, i risultati stampati ordinati in ordine crescente dei valori nell'hash nidificato.

Conclusione

Usando questo tutorial, hai guardato come usare i metodi Ord e Ordina per ordinare un hash in Ruby. Usando questa guida, puoi scrivere codice ruby ​​corto ed efficiente.