如何在Ruby中比较和打印匹配的哈希值?

时间:2017-02-19 12:49:34

标签: ruby

我有两个哈希,如下,

tcp://

我想迭代hash1和hash2并找到匹配的键及其值并在控制台上打印。 这里的示例应该返回输出“b”=> 2.不使用以下代码,

stream_socket_client()

我基本上来自C ++和Java背景,并且很容易使用for循环和迭代器,但是使用Ruby,这非常困难。

4 个答案:

答案 0 :(得分:2)

hexasc:
      andi  $a0,$a0,0x0f
      addi  $v0,$zero,0x30
      addi  $t0,$zero,0x9

      ble   $a0,$t0,L1
      nop
      addi  $v0,$v0,0x7

L1:
      add   $v0,$a0,$v0
      jr    $ra
nop

这使用Hash#merge的形式,它使用bock来确定合并的两个哈希中存在的键的值。有关详细信息,请参阅文档。

答案 1 :(得分:1)

您可能会写一些类似

的内容
h1.each do |k,v|
  if h2[k] == v
    puts "matched key = #{k} and value = #{v}"
  else
    puts "NOT matched key = #{k} and value = #{v}"
  end
end

输出

NOT matched key = a and value = 1
matched key = b and value = 2
NOT matched key = c and value = 3

答案 2 :(得分:1)

不需要第二个循环。

h1.each do |key1, value1|
  if (h2.include? key1) and (h2[key1] == value1)
    puts "Match #{key1} with value #{value1}"
  else
    puts "#{key1} does not match"
  end
end

答案 3 :(得分:1)

如果结果是主要目标,那么选择也可以工作:

h1.select{|k,v| h2[k] == v }