我有这个哈希:
@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
但我仍然无法弄清楚如何访问这些数据。我非常感谢你的建议。
答案 0 :(得分: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