合并数组以进行哈希并使用重复项

时间:2014-08-22 12:10:20

标签: ruby hash

如何保留重复并维护订单?例如:

keys   = [1, 2, 1]
values = ["a", "b", "c"]
Hash[keys.zip(values)] # => {1=>"c", 2=>"b"}

2 个答案:

答案 0 :(得分:4)

Justin&卢卡说:

  

哈希不允许重复密钥。

你能做的最好就是拥有一系列值,在this中找到这个解决方案所以问题:

Hash.new.tap { |h| keys.zip(values).each { |k, v| (h[k] ||= []) << v } }
# => {1=>["a", "c"], 2=>["b"]} 

答案 1 :(得分:2)

如果将keys数组用作散列键,则无法保留重复项。它们必须是唯一的