迭代哈希以检索与数组匹配的值
Iterate over a Hash to retrieve values matching an array
我有代码 -
class Conversion
hash ={'I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000}
puts "enter the string"
input = gets.chomp.upcase.split(//)
result = 0
hash.each do | key, value |
case key
when 'M'
result = result + value
when 'D'
result = result + value
when 'C'
result = result + value
when 'L'
result = result + value
when 'X'
result = result + value
when 'V'
result = result + value
when 'I'
result = result + value
end
end
puts result
end
c= Conversion.new
我通过命令行给出一个像 mxv 这样的字符串,并将其转换成一个数组,并在 'input' 中将其作为 MXV。
现在我想遍历哈希,这样我就可以得到数组中作为字符串的键的相应 'values' 。
例如,对于 MXV ,我需要 values = [1000, 10, 5].
我该怎么做?
我做了更多研究并在堆栈上提到了这个 post -
Ruby - getting value of hash
并解决了我的问题 -
input.each do |i|
value = hash[i.to_sym]
puts value
end
感谢所有花时间浏览问题的人。
arr = []
"MXV".each_char do |i|
arr << hash[i.capitalize]
end
arr = [1000, 10, 5]
或
"MXV".each_char.map { |i| hash[i.capitalize] }
如果您输入的字符在哈希键中不存在
例如:
"MXVabc".each_char.map { |i| hash[i.capitalize] }
它将输出:
=> [1000, 10, 5, nil, nil, 100]
你只需要使用compact
方法。
"MXVabc".each_char.map { |i| hash[i.capitalize] }.compact
=> [1000, 10, 5, 100]
我有代码 -
class Conversion
hash ={'I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000}
puts "enter the string"
input = gets.chomp.upcase.split(//)
result = 0
hash.each do | key, value |
case key
when 'M'
result = result + value
when 'D'
result = result + value
when 'C'
result = result + value
when 'L'
result = result + value
when 'X'
result = result + value
when 'V'
result = result + value
when 'I'
result = result + value
end
end
puts result
end
c= Conversion.new
我通过命令行给出一个像 mxv 这样的字符串,并将其转换成一个数组,并在 'input' 中将其作为 MXV。 现在我想遍历哈希,这样我就可以得到数组中作为字符串的键的相应 'values' 。 例如,对于 MXV ,我需要 values = [1000, 10, 5].
我该怎么做?
我做了更多研究并在堆栈上提到了这个 post - Ruby - getting value of hash
并解决了我的问题 -
input.each do |i|
value = hash[i.to_sym]
puts value
end
感谢所有花时间浏览问题的人。
arr = []
"MXV".each_char do |i|
arr << hash[i.capitalize]
end
arr = [1000, 10, 5]
或
"MXV".each_char.map { |i| hash[i.capitalize] }
如果您输入的字符在哈希键中不存在
例如:
"MXVabc".each_char.map { |i| hash[i.capitalize] }
它将输出:
=> [1000, 10, 5, nil, nil, 100]
你只需要使用compact
方法。
"MXVabc".each_char.map { |i| hash[i.capitalize] }.compact
=> [1000, 10, 5, 100]