学习Ruby中的哈希

学习Ruby中的哈希,ruby,hash,Ruby,Hash,我现在想知道如何在散列中只打印密钥。我还是个新手,我缺少一些关于如何打印钥匙的知识。到目前为止,我的代码是: shopping_list = { 'milk' => false, 'eggs' => false, 'jalapenos' => true } puts "Here is your shopping list!" shopping_list.each do |key| puts "- #{key}&qu

我现在想知道如何在散列中只打印密钥。我还是个新手,我缺少一些关于如何打印钥匙的知识。到目前为止,我的代码是:

shopping_list = {
    'milk' => false,
    'eggs' => false,
    'jalapenos' => true
}

puts "Here is your shopping list!"
shopping_list.each do |key|
    puts "- #{key}"
end
我的输出:

Here is your shopping list!
- ["milk", false]
- ["eggs", false]
- ["jalapenos", true]
我只想打印出如下值:

Here is your shopping list!
- milk
- eggs

最后,我想省略真正的购物项目,在这个例子中,它已经被购买了。我想先打印出我还需要买的东西。

您可以通过组合
#reject
#key
#每个
方法获得您想要的值,如下所示:

shopping_list.reject{| key,value | value}.keys.each do | key|
放置“-#{key}”
结束
正如Cary Swoveland提到的,上面的代码是创建临时数组的。如果不想创建这些,可以使用以下代码:

shopping_list.each do| key,value|
如果值==false,则放入“-#{key}”
结束
找到了答案

shopping_list = {
    'milk' => false,
    'eggs' => false,
    'jalapenos' => true
}

puts "Here is your shopping list!"
for key in shopping_list.keys()
    puts "- #{key}"
end
我的输出

Here is your shopping list!
- milk
- eggs
- jalapenos

这不会返回您在问题中指定的结果。我知道,这是我解决问题的一个步骤。这实际上是我最后需要它做的其他事情之一。@CarySwoveland它可以改进,
shopping\u list.each{k,v{k}放“-{k}”,除非v}
更好。