ruby 해싱 루비의 해시 테이블에서 첫 번째 키와 값 쌍을 얻는 방법




해싱 재해 싱 (3)

추가 변수를 사용하지 않아도되는 짧은 대답 이 있습니다.

h = { "a" => 100, "b" => 200 , "c" => 300, "d" => 400, "e" => 500}
Hash[*h.first] #=> {"a" => 100}

또는 단일 위치에서 키 / 값검색 하려는 경우

Hash[*h.to_a.at(1)] #=> {"b" => 200}

또는 다양한 위치에서 키 / 값 검색 :

 Hash[h.to_a[1,3]] #=> {"b"=>200, "c"=>300, "d"=>400}

루비의 해시 테이블에서 첫 번째 키와 값 키를 가져 오려고합니다. 메서드에 전달되기 때문에 해시의 키 값을 알 수 없습니다. 온라인 어디에서나 첫 번째 키 / 값을 별도의 해시 테이블로 찾는 방법을 찾을 수 없습니다. hash[0] 그냥 이름을 0으로 그냥 코드를 실행할 때 nil 반환하는 요소를 찾으려고합니다 생각합니다.

키 이름과 값을 찾아서 새 해시를 만들 수는 있지만이 작업을 쉽게 수행 할 수있는 방법이 있는지 궁금합니다. 바로 해시를 얻을 수 있습니다.

여기 내 코드입니다 :

def rps_game_winner(game)

rock_in_hash = game.invert['R']
paper_in_hash = game.invert['P']
scissors_in_hash = game.invert['S']

if(rock_in_hash)
      if(paper_in_hash)
        return paper_in_hash;
      elsif(scissors_in_hash)
        return rock_in_hash
      end
    elsif(paper_in_hash)
      if(rock_in_hash)
        return paper_in_hash
      elsif(scissors_in_hash)
        return scissors_in_hash
      end
    end
        key = game.keys[-1]
        value = game.values[-1]
            winner = {key => value}
    return winner 
    end

game_one = { "Bob" => 'P', "Jim" => 'P' }

puts rps_game_winner(game_one)

이것은 나에게 정확한 결과를 얻는다. 문제는 왜 그것이 0 대신 -1인지 이해하지 못한다. 그리고 새로운 해시를 생성하는 대신 해시 테이블의 첫 번째 키 / 값 쌍을 얻는 더 좋은 방법이 있기를 바랐다. 이전 표에서 검색 한 키와 값이있는 테이블.


너는 할 수있어.

key, value = hash.first

또는 원하는 경우 :

key = hash.keys[0]
value = hash.values[0]

그럼 어쩌면 :

new_hash = {key => value}

나는 당신이 여전히 루비 기본을 먼저 읽을 필요가 있다고 생각한다. 여기 어떤 방법 으로든 루비의 기초에 대한 대답과 링크가있다.

h = { "a" => 100, "b" => 200 }
h.each {|key, value| puts "#{key} is #{value}" }
produces:
a is 100
b is 200


h.each_key{|key| puts "key is #{key} "
produces:
key is a
key is b

h.each_value{|value| puts "value is #{value} "
produces:
value is 100
value is 200

위의 대답에서 우리는 each_key, each_value를 사용하여 hash에서 값을 가져옵니다. 각각은 당신에게 각 열쇠, 가치를 줄 것입니다. each_key는 각 키를 줄 것이다. each_value는 각 값을 제공합니다.

다음은 루비의 기본 링크입니다.

http://ruby-doc.org/core-1.9.2/Hash.html

루비 기본





hash