Hash invert in Ruby?

后端 未结 8 1873
星月不相逢
星月不相逢 2021-01-13 00:27

I\'ve got a hash of the format:

{key1 => [a, b, c], key2 => [d, e, f]}

and I want to end up with:

{ a => key1, b =         


        
8条回答
  •  猫巷女王i
    2021-01-13 01:11

    If you're looking to reverse a hash formatted like this, the following may help you:

    a = {:key1 => ["a", "b", "c"], :key2 => ["d", "e", "f"]}
    a.inject({}) do |memo, (key, values)|
      values.each {|value| memo[value] = key }
      memo
    end
    

    this returns:

    {"a"=>:key1, "b"=>:key1, "c"=>:key1, "d"=>:key2, "e"=>:key2, "f"=>:key2}
    

提交回复
热议问题