arrays - 迭代哈希以检索与数组匹配的值

标签 arrays ruby iteration hash

我有密码 -

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 这样的字符串,并将其转换为一个数组,并将其作为“输入”中的 MXV。 现在我想遍历哈希,这样我就可以获得数组中作为字符串的键的相应“值”。 例如,对于 MXV ,我需要值 = [1000, 10, 5]。

我该怎么做?

最佳答案

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]

关于arrays - 迭代哈希以检索与数组匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136714/

相关文章:

C- 我如何查看谁赢得了 O/X 的 NxN 游戏?

ruby - Ruby 中使用的独立 splat 运算符 (*) 是什么?

ruby - Cocoapods 安装错误 mkmf.rb 找不到 ruby​​ 的头文件

javascript - 对 XML 文档中的特殊字符进行转义

c++ - 在 C++ 中复制多维数组引用

Javascript - 比较两个数组。如果两者都找到对象,则更改它

ruby - Ruby 的 "Open Classes"会破坏封装吗?

python - 如何将单链表递归元素和转换为迭代解决方案

python - 在theano中扫描不同维度的张量

objective-c - 如何附加到 C 数组的末尾