【问题标题】:Ruby array to look up hash values用于查找哈希值的 Ruby 数组
【发布时间】:2016-10-31 14:21:18
【问题描述】:

我还是新手,所以请耐心等待。我有一个子字符串数组和一个包含子字符串和字符串的哈希。

substrings = ["sub1", "sub2", "sub3",...etc.]
hash = {"sub1"=>"string1", "sub2"=>"string2", "sub3"=>"string3"...}

例如,哈希值可能是"ount"=>"country"。我想通过从我的数组中拉出"ount" 来查找它,然后输出"country" 作为"ount" 键的值。我想对数组中的每个子字符串都这样做。

每个子字符串只有一个字符串。这两个列表都是按字母顺序排列的,因此在找到它时停止并移动到下一个是可以的。我可以找到项目的计数,但宁愿将其作为迭代进行,以便它是可重用的代码,如果这有意义的话。

【问题讨论】:

  • 看看Array#eachHash#[]方法你应该有解决办法
  • 您可能需要hash.values_at(*substrings)。见Hash#values_at。如果hash = { "a"=> 1, "b"=> 2, "c"=> 3 }str = ["b", "a"] 然后hash.values_at(*str) #=> [2, 1]。这里hash.values_at(*str) = hash.values_at(*["b", "a"] = hash.values_at("b", "a")。顺便说一句,Ruby 没有“子字符串”的概念;只有“字符串”。您当然可以在特定字符串的上下文中引用“子字符串”来解释您想要做什么。
  • 卡里,这看起来正是我想要的。谢谢!

标签: arrays ruby hash substring


【解决方案1】:
substrings = ["sub1", "sub2", "sub3"]
hash = {"sub1"=>"string1", "sub2"=>"string2", "sub3"=>"string3"}

如果要打印子字符串中每个元素的值

substrings.each do |str|
    p "value of #{str} is #{hash[str]}"  if hash.has_key?(str)
end

#output
"value of sub1 is string1"
"value of sub2 is string2"
"value of sub3 is string3"

如果你想打印特定给定子字符串的值

def find_value(str,hash)    
    "value of #{str} is #{hash[str]}"  if hash.has_key?(str)
end

p find_value("sub1",hash)

#Output
"value of sub1 is string1"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多