0

我有这个哈希:

@hash = [
  {0=>"1", 1=>"A1", 2=>"something", 3=>"10"}, 
  {0=>"2", 1=>"A1", 2=>"something", 3=>"8"},
  {0=>"3", 1=>"A2", 2=>"something", 3=>"3"},
  {0=>"4", 1=>"A2", 2=>"something", 3=>"13"}
]

我需要group_by第一列(A1,A2)中的值,然后处理数据(例如,为 A1 和 A2 的索引为 3 的项目选择最低值)。

@hash.each do |item|
  item.each do |item2|
    item2.group_by{ |i| i[1] }.each do |p|
      puts p
    end
  end
end

但我仍然无法弄清楚如何访问这些数据。我将非常感谢您的建议。

4

1 回答 1

0

尝试以下

>> grouped = @hash.group_by { |h| h[1] }
>> grouped['A1'] # [{0=>"1", 1=>"A1", 2=>"something", 3=>"10"}, {0=>"2", 1=>"A1", 2=>"something", 3=>"8"}]
>> grouped['A2'] # [{0=>"3", 1=>"A2", 2=>"something", 3=>"3"}, {0=>"4", 1=>"A2", 2=>"something", 3=>"13"}]

要获得最大值或最小值,请尝试

>> grouped['A1'].max_by { |h| h[3].to_i }[3] # 10
>> grouped['A1'].min_by { |h| h[3].to_i }[3] # 8
于 2013-03-04T08:50:27.870 回答