Converti un array in hash in Ruby

Converti un array in hash in Ruby

In Ruby, un hash si riferisce a una raccolta di coppie di valore chiave. È strettamente simile a un array nel senso che può archiviare più valori correlati, ma l'indicizzazione viene eseguita tramite tasti anziché numeri interi. Se hai familiarità con i linguaggi di programmazione Python, pensa agli hash di Ruby come dizionari di Python.

D'altra parte, un array si riferisce a una raccolta ordinata di valori. Puoi pensare a un array come un elenco di elementi con un indice o una posizione specifica per ciascun articolo.

Potresti incontrare tali istanze in cui è necessario espandere un indice a un hash di Ruby. Ciò rende facile mappare un determinato set di valori in un array a un formato simile a un dizionario.

Questo tutorial copre vari metodi per convertire un dato array di rubini in un hash.

Array di esempio

Per dimostrare come possiamo convertire un array in un hash in Ruby, lavoreremo con l'array di esempio fornito di seguito:

arr = [1, 'Mysql', 2, 'Postgresql', 3, 'sqlite']


In questo caso, desideriamo convertire l'array in un hash in cui il valore numerico funge da chiave e i valori della stringa sono il valore dell'hash.

Convertire un array in hash usando il metodo TO_H

Nelle ultime versioni di Ruby, abbiamo accesso al metodo TO_H che ci consente di convertire un array bidimensionale in un hash Ruby.

Quindi, dobbiamo prima convertire l'array unidimensionale in un array bidimensionale.

Possiamo farlo usando il metodo di ogni_slice. Questo metodo è definito nel modulo enumerabile Ruby incluso nella classe Array. Ci consente di iterare sugli elementi di un array in fette di una determinata dimensione.

Possiamo usare questo metodo come dimostrato nel seguente codice:

arr.ogni_slice (2)
=> #


Questo restituisce un oggetto enumeratore che possiamo convertire in un array usando il metodo TO_A come mostrato nel seguente:

IRB (principale): 004: 0> arr.ogni_slice (2).to_a
=> [[1, "mysql"], [2, "postgresql"], [3, "sqlite"]]


Questo dovrebbe darci un array bidimensionale, come dimostrato in precedenza.

Infine, possiamo convertire i valori in a come mostrato nel seguente:

IRB (principale): 005: 0> arr.ogni_slice (2).to_a.to_h


L'hash risultante è il seguente:

=> 1 => "mysql", 2 => "postgresql", 3 => "sqlite"

Convertire un array in hash usando il metodo hash :: []

La notazione: [] nella classe Hash Ruby ci consente di restituire un nuovo hash con i valori forniti.

Per convertire un array in un hash usando questo metodo, possiamo usare il seguente comando:

IRB (main): 011: 0> hash ['1', 'mysql', '2', 'postgresql', '3', 'sqlite']
=> "1" => "mysql", "2" => "postgresql", "3" => "sqlite"


Questo dovrebbe restituire un nuovo hash senza aver bisogno di convertire l'array in un array bidimensionale.

Conclusione

Abbiamo discusso di come è possibile utilizzare il metodo dell'array#to_h e hash :: [] per convertire un array in un hash nel linguaggio di programmazione Ruby.