Sortuj Hash Ruby

Sortuj Hash Ruby

Hash lub słownik (w innych językach programowania) odnosi się do struktury danych, która przechowuje dane w parach kluczowych. Każdy klucz w skrócie musi być unikalny i może być dowolnym ważnym typem danych Ruby.

Skróty są niezwykle przydatne i mogą zaoszczędzić dużo czasu i kodu, gdy są odpowiednio używane. Chociaż zachowują się jak tablice, skróty używają unikalnych kluczy zamiast pozycji całkowitej. Pomyśl o skrótach jako o prawdziwym słowniku, w którym każdy klucz jest unikalny i ma odpowiednie znaczenie lub wartość.

W tym przewodniku dowiemy się, jak sortować skrót w Ruby za pomocą różnych metod. Nie, nie będziemy używać fantazyjnych algorytmów ani testów porównawczych. Skoncentrujemy się na wbudowanych metod sortowania Ruby.

Ruby Hash - Podstawy

Tworzenie skrótu w Ruby jest bardzo proste. Zaczynasz od zdefiniowania klucza, a następnie symbolu =>. Załączamy przedmioty w skrócie w pary kręconych aparatów ortodontycznych.

„key” => „wartość”

Możesz dodać wiele par wartości kluczy, oddzielając je za pomocą przecinków:

„MS” => „Massachusetts”, „id” => „Idaho”, „ga” => „Georgia”, „in” => „Indiana”

Ruby obsługuje również inny format, aby stworzyć skrót. Zamiast używać notacji rakietowej =>, możesz używać kolonów.

„MS”: „Massachusetts”, „id”: „Idaho”, „GA”: „Georgia”, „w”: „Indiana”

Niezależnie od tego, jaką metodę używasz do utworzenia rubinowego skrót.

Jeśli chcesz nauczyć się pracować z Ruby Haszhes, rozważ samouczek:

https: // linuxhint.com/indic-to-użytkowe-rubie-hashes/

Sortowanie skrótów w Ruby

Aby posortować skrót w Ruby bez użycia niestandardowych algorytmów, użyjemy dwóch metod sortowania: sortowania i sortowania.

Za pomocą wbudowanych metod możemy sortować wartości w skrócie według różnych parametrów.

Omówmy:

#sortować

Pierwszą metodą użycia podczas sortowania skrótu jest metoda sortowania. Metoda sortowania zwraca tablicę sortowanych wartości. Działa poprzez porównanie wartości za pomocą operatora.

Przykład 1

Rozważ przykład skrót poniżej:

State_info = „Massachusetts” => 78, „Idaho” => 72, „Georgia” => 41, „Indiana” => 45
State_info.sortować

Gdy wywołamy metodę sortowania z skrótem, zwróci klucze sortowane w kolejności alfabetycznej.

[[„Georgia”, 41], [„Idaho”, 72], [„Indiana”, 45], [„Massachusetts”, 78]]

Zauważysz, że wynik z posortowanego skrótu ma postać tablicy wielowymiarowej. Jak wspomniano, metoda sortowania zwraca tablicę sortowanych wartości.

Aby uzyskać dostęp do posortowanych par wartości kluczy, możesz użyć notacji indeksu.

sorted_state = state_info.sortować
sorted_state [0]
[„Georgia”, 41]

Przykład 2

Rozważmy scenariusz, w którym musimy sortować skrót według wartości zamiast kluczy.

Niestety, nie ma bezpośredniego sposobu sortowania skrótu według klawiszy. Możemy jednak użyć metody wartości do pobrania wartości skrótu i ​​sortowania.

Spójrz na poniższy przykład:

State_info.wartości.sortować

Po wykonaniu powyższego polecenia powinniśmy uzyskać wartości skrótu posortowane w formacie tablicy.

[41, 45, 72, 78]

Przykład 3

Wartości metody sortowania są typu tablicy. Możemy je zmienić z powrotem na skrót za pomocą metody TO_H.

Spójrz na poniższy przykład:

State_info = „Massachusetts” => 78, „Idaho” => 72, „Georgia” => 41, „Indiana” => 45
State_info.sortować.to_h

Powyższy przykład zwróci skrót posortowany jako:

„Georgia” => 41, „Idaho” => 72, „Indiana” => 45, „Massachusetts” => 78
#Sortuj według

W przykładzie 2 zaimplementowaliśmy prosty sposób sortowania skrótu według wartości. Jest jednak jedna wada: tylko sortujemy klucze, a nie klawisze.

Aby to rozwiązać, możemy zanurzyć się w użyciu metody sort_by.

Przykład 1

Rozważ skrót State_Info z poprzednich metod:

State_info = „Massachusetts” => 78, „Idaho” => 72, „Georgia” => 41, „Indiana” => 45

Za pomocą sortowania możemy wykonać następującą operację:

State_info.sort_by | k, v | v

Zauważysz, że metoda używa bloków rubinowych do sortowania wartości w określonej kolejności. Sprawdź nasz samouczek na Ruby, aby dowiedzieć się więcej.

Powstała wartość to:

[[„Georgia”, 41], [„Indiana”, 45], [„Idaho”, 72], [„Massachusetts”, 78]]

Więc +++ rting wartości z powstałej tablicy jest w kolejności rosnącej. W tym przykładzie uwzględniamy zarówno klucze, jak i ich odpowiednie wartości.

Podobnie możesz przywrócić wynik do skrótu:

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

Przykład 2

Domyślnie metody sortowania w Ruby sortuje się według kolejności rosnącej. Aby uzyskać posortowane wartości w odwrotnej kolejności, możemy wywołać metodę #Reverse.

State_info = „Massachusetts” => 78, „Idaho” => 72, „Georgia” => 41, „Indiana” => 45
State_info.sort_by | k, v | v.odwracać
[[„Massachusetts”, 78], [„Idaho”, 72], [„Indiana”, 45], [„Georgia”, 41]]

Przykład 3

Załóżmy, że mamy zagnieżdżony hasz. Jak sortujemy wartości wewnątrz zagnieżdżonego haszu?

Rozważ następujący przykład skrótu:

stany =
„Massachusetts” => "ABR" => "MA", "FIPS_CODE" => 25,
„Idaho” => "ABR" => "ID", "FIPS_CODE" => 16,
„Georgia” => „ABR” => „GA”, „FIPS_CODE” => 13,
„Indiana” => „ABR” => „in”, „fips_code” => 18

Aby sortować skrót według wartości zagnieżdżonego skrótu, możemy zrobić sort_by, jak pokazano:

państwa.sort_by | k, v | v [„fips_code”]

Powstałe wartości są jako:

[[„Georgia”, „ABR” => „GA”, „FIPS_CODE” => 13],
[„Idaho”, „ABR” => „ID”, „FIPS_CODE” => 16],
[„Indiana”, „ABR” => „in”, „fips_code” => 18],
[„Massachusetts”, „ABR” => „MA”, „FIPS_CODE” => 25]]]]

Jak pokazuje ten przykład, wyniki wydrukowane posortowane w kolejności rosnącej wartości w zagnieżdżonym skrócie.

Wniosek

Korzystając z tego samouczka, spojrzałeś na sposób użycia metod sortowania i sort_by, aby sortować skrót w Ruby. Korzystając z tego przewodnika, możesz napisać krótki i bardziej wydajny kod rubinowy.