Ruby에서 양방향 해시 테이블이 필요합니다. 예를 들어 :Ruby의 양방향 해시 테이블
h = {:abc => 123, :xyz => 789, :qaz => 789, :wsx => [888, 999]}
h.fetch(:xyz) # => 789
h.rfetch(123) # => abc
h.rfetch(789) # => [:xyz, :qaz]
h.rfetch(888) # => :wsx
방법 반전 rfetch
의미 는을 가져오고 단지 내 제안이다.
주 세 가지가 :
- 여러 개의 키가 같은 값에
rfetch
반환 그들 모두를 매핑 할 경우, 배열에 포장. - 값이 배열 인 경우
rfetch
은 배열의 요소 중에서 해당 매개 변수를 찾습니다. - 양방향 해시는
fetch
과rfetch
이 일정한 시간 내에 실행되어야 함을 의미합니다.
이러한 구조는 Ruby (외부 라이브러리 포함)에 있습니까?
두 개의 단방향 해시 중 하나를 수정하여 (동기화 문제를 피하기 위해 클래스로 패킹 할 때) 동기화 할 생각을했지만 어쩌면 기존 솔루션을 사용할 수 있을까요?
빠르고 지저분한 경우 내장 hash.invert()를 사용하여 별도의 역 해시를 만들 수 있습니다 (http://stackoverflow.com/a/3794060/18706). @ ken-bloom이 지적했듯이, 이것에 대한보다 강력한 구현은 http://raa.ruby-lang.org/project/inverthash/ – mahemoff