我在rails中有一个哈希:
{"unique_id" => "1",
"unique_id2" => "2",
"unique_id3" => "n"}
每个唯一键的计数可以是1-20。我想做的是有一个看起来像这样的哈希:
{"1" => ["unique_id", "unique_id2"],
"2" => ["unique_id3"],
"3" => ["unique_id4", "unique_id5", "uniqueid6"]}
我如何用哈希来做这件事?
答案 0 :(得分:2)
不太难!
hash = { "unique_id" => "1",
"unique_id2" => "2",
"unique_id3" => "n"
}
new_hash = hash.each_with_object({}) { |(k,v), h| (h[v] ||= []) << k }
each_with_object({})
只是一个带有空白哈希的每个循环
||= []
表示如果散列没有v
的值,则将其设置为空数组
<< k
将密钥推送到数组
答案 1 :(得分:0)
试试这个:
h.group_by{|k,v| v }.each{|k,v| v.map!(&:first) }
group_by
获取您的哈希并按值
each
遍历结果哈希
map!
映射结果值数组的第一个元素,因为group_by
上的Hash
会返回结构为Array
<的二维[key, value]
/ p>