我需要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
查找其PARAM的數組的元素之一。 - 雙向散列意味着兩個
fetch
和rfetch
應在一定時間執行。
是否在紅寶石(包括外部庫)存在這樣的結構?
我想過使用同步的兩個單向散列實現它時,其中一個被修改(和它包裝成類,以避免同步問題),但也許我可以用一個已經存在的解決方案嗎?
對於一個快速而髒亂的,你可以使用內置的'hash.invert()'做一個單獨的逆散列(http://stackoverflow.com/a/3794060/18706)。正如@ ken-bloom指出的那樣,這個更強大的實現在http://raa.ruby-lang.org/project/inverthash/ – mahemoff