如何使用一组数组创建哈希

时间:2011-06-21 02:39:54

标签: ruby-on-rails

我有以下内容:

[[1,1,3], [1,2,3], [2,1,3]

我希望能够采用上述方法,并创建一个哈希

 1 => { [1,3], [2,3] }, 2 => {[1,3]}

修改

此外,我还想添加以下内容:

因为新数组中的第一个元素是月份,如果我没有第4个月的数据,它可以默认为[4,0]

 1 => { [1,3], [2,1], [3,4], }

1 个答案:

答案 0 :(得分:4)

x = [[1,1,3], [1,2,3], [2,1,3]]
y = x.map {|a| {a[0]=> [a[1], a[2]]}}

修改

实际上我的初步解决方案是错误的,它会给你:

[{1=>[1, 3]}, {1=>[2, 3]}, {2=>[1, 3]}] 

我相信这更接近你想要的东西:

x = [[1,1,3], [1,2,3], [2,1,3]]
h = {}

x.each do |a|
  if h[a[0]].nil?
    h[a[0]] = []
  end
  h[a[0]] << [a[1], a[2]]
end

这给你一个数组哈希:

{1=>[[1, 3], [2, 3]], 2=>[[1, 3]]}