Classificar hash ruby

Classificar hash ruby

Um hash ou um dicionário (em outras linguagens de programação) refere-se a uma estrutura de dados que armazena dados em pares de valores-chave. Cada chave em um hash deve ser única e pode ser de qualquer tipo de dados rubi válido.

Os hashes são incrivelmente úteis e podem economizar muito tempo e codificar quando usados ​​adequadamente. Embora tendam a se comportar como matrizes, os hashes usam teclas exclusivas em vez de posições inteiras. Pense nos hashes como um verdadeiro dicionário em que cada chave é única e mantém um significado ou valor correspondente.

Neste guia, aprenderemos a classificar um hash em rubi usando vários métodos. Não, não usaremos algoritmos ou benchmarks sofisticados. Vamos nos concentrar nos métodos de classificação de rubi embutidos.

Ruby Hash - o básico

Criar um hash em rubi é muito direto. Você começa definindo uma chave seguida pelo símbolo => e pelo valor. Nós incluímos itens em um hash em um par de aparelhos encaracolados.

"key" => "value"

Você pode adicionar vários pares de valor-chave, separando-os usando vírgulas:

"Ms" => "Massachusetts", "id" => "Idaho", "GA" => "Georgia", "em" => "Indiana"

Ruby também suporta outro formato para criar um hash. Em vez de usar a notação de foguetes =>, você pode usar a colonas.

"MS": "Massachusetts", "Id": "Idaho", "GA": "Georgia", "em": "Indiana"

Independentemente de qual método você usa para criar um hash rubi, o intérprete de rubi os reconhecerá como hashes válidos.

Se você deseja aprender a trabalhar com Ruby Hashes, considere o tutorial:

https: // linuxhint.com/como use-ruby-hashes/

Classificando hashes em rubi

Para classificar um hash em ruby ​​sem usar algoritmos personalizados, usaremos dois métodos de classificação: o Sort and Sort_by.

Usando os métodos internos, podemos classificar os valores em um hash por vários parâmetros.

Vamos discutir:

#organizar

O primeiro método a ser usado ao classificar um hash é o método de classificação. O método de classificação retorna uma matriz dos valores classificados. Funciona comparando os valores usando o operador.

Exemplo 1

Considere o exemplo de hash abaixo:

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

Depois de chamarmos o método de classificação contra o hash, ele retornará as chaves classificadas em ordem alfabética.

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

Você notará que o resultado do hash classificado está na forma de uma matriz multidimensional. Como mencionado, o método de classificação retorna uma matriz dos valores classificados.

Para acessar os pares de valor-chave classificados, você pode usar a notação de índice.

STORD_STATE = STATE_INFO.organizar
STORD_STATE [0]
["Georgia", 41]

Exemplo 2

Vamos considerar um cenário em que precisamos classificar o hash pelos valores em vez das chaves.

Infelizmente, não há maneira direta de classificar o hash por chaves. No entanto, podemos usar o método dos valores para buscar os valores de hash e classificá -los.

Dê uma olhada no exemplo abaixo:

state_info.valores.organizar

Depois de executar o comando acima, devemos obter os valores do hash classificado em formato de matriz.

[41, 45, 72, 78]

Exemplo 3

Os valores do método de classificação são do tipo de matriz. Podemos alterná -los de volta ao hash usando o método to_h.

Veja o exemplo abaixo:

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

O exemplo acima retornará o hash classificado como:

"Georgia" => 41, "Idaho" => 72, "Indiana" => 45, "Massachusetts" => 78
#ordenar por

No Exemplo 2, implementamos uma maneira simples de classificar o hash por valores. No entanto, há uma desvantagem: nós apenas classificamos as chaves e não as chaves.

Para resolver isso, podemos mergulhar em usar o método Sort_by.

Exemplo 1

Considere o hash state_info dos métodos anteriores:

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

Usando a classificação por, podemos executar a seguinte operação:

state_info.Sort_by | k, v | v

Você notará que o método usa blocos de rubi para classificar os valores na ordem especificada. Verifique nosso tutorial sobre Ruby, faça para saber mais.

O valor resultante é:

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

Então +++ rting dos valores da matriz resultante está em ordem crescente. Neste exemplo, incluímos as chaves e seus valores correspondentes.

Da mesma forma, você pode reverter o resultado para um hash:

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

Exemplo 2

Por padrão, os métodos de classificação em Ruby classificarão por ordem crescente. Para obter os valores classificados em ordem inversa, podemos chamar o método #Reverse.

state_info = "Massachusetts" => 78, "Idaho" => 72, "Georgia" => 41, "Indiana" => 45
state_info.Sort_by | k, v | v.reverter
[["Massachusetts", 78], ["Idaho", 72], ["Indiana", 45], ["Georgia", 41]]

Exemplo 3

Suponha que tenhamos um hash aninhado. Como classificamos os valores dentro do hash aninhado?

Considere o seguinte exemplo hash:

estados =
"Massachusetts" => "abr" => "ma", "fips_code" => 25,
"Idaho" => "abr" => "id", "fips_code" => 16,
"Georgia" => "abr" => "ga", "fips_code" => 13,
"Indiana" => "abr" => "em", "fips_code" => 18

Para classificar o hash pelos valores do hash aninhado, podemos fazer um sort_by como mostrado:

estados.Sort_by | k, v | v ["fips_code"]

Os valores resultantes são como:

[["Georgia", "abr" => "ga", "fips_code" => 13],
["Idaho", "abr" => "id", "fips_code" => 16],
["Indiana", "abr" => "em", "fips_code" => 18],
["Massachusetts", "abr" => "ma", "fips_code" => 25]]]

Como este exemplo mostra, os resultados impressam classificados em ordem crescente dos valores no hash aninhado.

Conclusão

Usando este tutorial, você analisou como usar os métodos Sort e Sort_By para classificar um hash em rubi. Usando este guia, você pode escrever um código de rubi curto e mais eficiente.