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" => 45Depois 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.organizarExemplo 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.organizarDepois 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" => 45O exemplo acima retornará o hash classificado como:
"Georgia" => 41, "Idaho" => 72, "Indiana" => 45, "Massachusetts" => 78No 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" => 45Usando a classificação por, podemos executar a seguinte operação:
state_info.Sort_by | k, v | vVocê 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_hExemplo 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" => 45Exemplo 3
Suponha que tenhamos um hash aninhado. Como classificamos os valores dentro do hash aninhado?
Considere o seguinte exemplo hash:
estados =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],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.