ruby - 快速找出重复哈希值的所有键的方法

标签 ruby hash

我有一个散列如下:

hash = {"Monday" => "a", "Tuesday" => "b", "Wednesday" => "c", "Thursday" => "b", "Friday" => "c"}

我想得到一个新的散列:

{"a" => "Monday", "b" => "Tuesday, Thursday" , "c" => "Wednesday, Friday"}

Hash#invert 只给出第一个值并丢失重复的值。有什么有效的方法可以做到这一点?

最佳答案

hash.inject({}){ |h, (k,v)| (h[v] ||= []) << k; h }
=> {"a"=>["Monday"], "b"=>["Tuesday", "Thursday"], "c"=>["Wednesday", "Friday"]}

关于ruby - 快速找出重复哈希值的所有键的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15796881/

相关文章:

ruby-on-rails - Ruby on Rails 中的 form_for 错误消息

regex - 如何使用正则表达式只匹配字符串中多次出现的字母?

encryption - 哪种密码存储方式更安全

java - hashCode() : Objects. hash() 和基类?

ruby - 如何对字符串中的所有元音进行散列?

Java - 使对象集合友好

ruby - 如何在 Ruby Regex 中正确使用前瞻?

ruby-on-rails - 将 Gem 转换为 Ruby 插件

python - Ruby 中的装饰器(从 Python 迁移)

java - HashMap如何保证使用key的hashcode计算出的索引在可用范围内?