将数组合并为哈希并使用重复项

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

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

正如贾斯汀和卢卡所说:

哈希不允许重复键。

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

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

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