Ruby 遍历散列并比较值对
Ruby iterate through hash and compare value pairs
我的 Ruby 任务是遍历散列和 return 与最低值关联的键,没有 使用以下任何方法:
#keys #values #min #sort #min_by
我不明白如何遍历散列并存储每对通过的散列,将其与最后通过的对以及 return 最低键进行比较。这是我的代码,向您展示我的思维过程,但这当然行不通。关于如何执行此操作的任何想法?谢谢!
def key_for_min_value(name_hash)
index = 0
lowest_hash = {}
name_hash.collect do |key, value|
if value[index] < value[index + 1]
lowest = value
index = index + 1
key_for_min_value[value]
return lowest
end
end
end
跟踪 min_value
和 key_for_min_value
。遍历哈希,任何时候当前 value
低于 min_value
,更新这两个变量。循环结束时,return key_for_min_value
.
我没有包含示例代码,因为,嘿,这是作业。 :) 祝你好运!
一种方法是将我们的散列转换为数组;
def key_for_min_value(name_hash)
# Convert hash to array
name_a = name_hash.to_a
# Default key value
d_value= 1000
d_key= 0
# Iterate new array
name_a.each do |i|
# If current value is lower than default, change value&key
if i[1] < d_value
d_value = i[1]
d_key = i[0]
end
end
return d_key
end
您可能需要将 d_value 更改为更高的内容或找到更有创意的内容:)
我们可以使用Enumerable#reduce
方法来比较条目并选择最小值。在 reduce 方法中,每个哈希条目都作为一个包含 2 个元素的数组传入,因此,我使用 Array#first
和 Array#last
方法来访问键和值。
h = {"a" => 1, "b" => 2, "c" => 0}
p h.reduce{ |f, s| f.last > s.last ? s : f }.first
#=> "c"
我的 Ruby 任务是遍历散列和 return 与最低值关联的键,没有 使用以下任何方法:
#keys #values #min #sort #min_by
我不明白如何遍历散列并存储每对通过的散列,将其与最后通过的对以及 return 最低键进行比较。这是我的代码,向您展示我的思维过程,但这当然行不通。关于如何执行此操作的任何想法?谢谢!
def key_for_min_value(name_hash)
index = 0
lowest_hash = {}
name_hash.collect do |key, value|
if value[index] < value[index + 1]
lowest = value
index = index + 1
key_for_min_value[value]
return lowest
end
end
end
跟踪 min_value
和 key_for_min_value
。遍历哈希,任何时候当前 value
低于 min_value
,更新这两个变量。循环结束时,return key_for_min_value
.
我没有包含示例代码,因为,嘿,这是作业。 :) 祝你好运!
一种方法是将我们的散列转换为数组;
def key_for_min_value(name_hash)
# Convert hash to array
name_a = name_hash.to_a
# Default key value
d_value= 1000
d_key= 0
# Iterate new array
name_a.each do |i|
# If current value is lower than default, change value&key
if i[1] < d_value
d_value = i[1]
d_key = i[0]
end
end
return d_key
end
您可能需要将 d_value 更改为更高的内容或找到更有创意的内容:)
我们可以使用Enumerable#reduce
方法来比较条目并选择最小值。在 reduce 方法中,每个哈希条目都作为一个包含 2 个元素的数组传入,因此,我使用 Array#first
和 Array#last
方法来访问键和值。
h = {"a" => 1, "b" => 2, "c" => 0}
p h.reduce{ |f, s| f.last > s.last ? s : f }.first
#=> "c"