다음 해시가 있습니다. {"CA"=>2, "MI"=>1, "NY"=>1}
루비를 사용하여 최대 키 값 쌍을 반환하려면 어떻게해야합니까? “CA”를 반환하고 싶습니다.
답변
그러면 해시 요소의 값에 따라 최대 해시 키-값 쌍이 반환됩니다.
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
답변
이 방법을 찾았고 첫 번째 최대 값의 키를 반환합니다.
hash.key(hash.values.max)
답변
다른 방법은 다음과 같습니다.
hash.each { |k, v| puts k if v == hash.values.max }
이것은 각 키-값 쌍을 통해 실행되고 값이 모든 값의 최대 값과 같은 키를 반환합니다 (또는이 경우에는 넣습니다). 동점 인 경우 둘 이상의 키를 반환해야합니다.
답변
키 값 쌍을 반환하려면 select 메서드를 사용할 수 있습니다.
hash.select {|k,v| v == hash.values.max }
답변
순서 (두 번째로 큰 것, 가장 작은 것 등)에 따라 둘 이상의 키 값 쌍을 검색하려는 경우 해시를 한 번 정렬 한 다음 원하는 결과를 얻는 것이보다 효율적인 방법입니다.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
가장 큰 가치의 열쇠
puts *hash[0][0]
최대 및 최소 얻기
puts *hash[0], *hash[hash.length-1]
두 번째로 큰 키 값 쌍
Hash[*hash[1]]
해시 배열을 다시 해시로 변환하려면
hash.to_h
답변
나는 오늘 비슷한 문제에 대해 이것을했고 결국 다음과 같이 끝났습니다.
hash = { "CA"=>2, "MI"=>1, "NY"=>1 }
hash.invert.max&.last
=> "CA"
2.3 미만의 Ruby의
경우 소스 해시가 비어있는 경우 둘 중 하나를 사용 &.last
하여 대체 할 수 있습니다 .try(:last)
.{}
답변
이것은 크기별로 정렬 된 해시의 마지막 키를 반환합니다. 그러나 동일한 값을 가진 두 개의 키가있을 수 있습니다.
def largest_hash_key(hash)
key = hash.sort{|a,b| a[1] <=> b[1]}.last
puts key
end
hash = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 }
largest_hash_key(hash)