반응형
가장 큰 값 해시의 키를 찾는 방법은 무엇입니까?
다음 해시가 있습니다. {"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)
참고 URL : https://stackoverflow.com/questions/6040494/how-to-find-the-key-of-the-largest-value-hash
반응형
'programing' 카테고리의 다른 글
OpenShift와 함께 기존 git repo를 사용할 수 있습니까? (0) | 2020.08.17 |
---|---|
Gson을 사용하여 JSON 배열을 java.util.List로 구문 분석 (0) | 2020.08.17 |
Swift : 문자의 처음부터 마지막 인덱스까지 부분 문자열을 얻는 방법 (0) | 2020.08.17 |
UIAlertView 먼저 사용되지 않는 IOS 9 (0) | 2020.08.17 |
Angular 2 TypeScript 배열에서 요소를 찾는 방법 (0) | 2020.08.17 |