У меня есть сложный массив хэшей, и я пытаюсь найти максимальное значение из него. Я содержит два поля, и я хочу извлечь только самое высокое значение из набора данных.Найти максимум из сложного хэша
Вот мой хэш:
hash = {
0=>nil,
1=>nil,
2=>nil,
3=>nil,
4=>nil,
5=>nil,
6=>nil,
7=>nil,
8=>nil,
9=>nil,
10=>nil,
11=>nil,
12=>nil,
13=>[{"name"=>"a", "value"=>6.3}],
14=>[{"name"=>"b", "value"=>1.2}],
15=>[{"name"=>"c", "value"=>2.5}],
16=>[{"name"=>"d", "value"=>3.1}],
17=>[{"name"=>"E", "value"=>1.2}],
18=>[{"name"=>"f", "value"=>6.3}],
19=>[{"name"=>"g", "value"=>3.9}],
20=>[{"name"=>"h", "value"=>3.9}],
21=>[{"name"=>"i", "value"=>3.9}],
22=>nil,
23=>nil
}
Я пытаюсь так:
for t in 0..hash.size -1
temp = hash[i].max_by{|a| a[0]["value"].to_i}
end
мне нужно только самое высокое значение из этого хэша, даже не тег.
Ожидаемый результат должен быть только:
temp = 6.3
Когда вы приводите примеры/образцы данных, уменьшите их до минимума, необходимого для демонстрации проблемы. Все, что выходит за рамки этого, является пустой тратой нашего времени и замедляет и отговаривает ответы. –
Что делать, если все значения хэша равны нулю? Какую ценность вы хотите вернуть? –
Это также работает: 'hash.to_s.scan (/ (? <==>) -? \ D + (?: \. \ D +)? /). Map (&: to_f) .max => 6.3'. –