我有一个哈希 h1 和密钥 k1。我需要为哈希中的给定键返回完整的键值对。
就像关键的“鱼”一样,我需要打印“鱼”=>“水生动物”
@h1,打印所有键值对。我需要打印给定键的键值对的方法
我对 ruby 很陌生,所以很抱歉这个菜鸟问题。
我有一个哈希 h1 和密钥 k1。我需要为哈希中的给定键返回完整的键值对。
就像关键的“鱼”一样,我需要打印“鱼”=>“水生动物”
@h1,打印所有键值对。我需要打印给定键的键值对的方法
我对 ruby 很陌生,所以很抱歉这个菜鸟问题。
有一种方法,Hash#assoc 可以做类似的事情。但它返回数组中的键和值,您可以轻松地将其更改为哈希。另一种方法是使用 Hash#select,它会根据给定的块返回一个哈希值。
h1 = { "fish" => "aquatic animal", "tiger" => "big cat" }
h1.assoc "fish" # ["fish", "aquatic animal"]
h1.select { |k,v| k == "fish" } # {"fish"=>"aquatic animal"}
在红宝石中 >= 1.9
value_hash = Hash[*h1.assoc(k1)]
p value_hash # {"fish"=>"aquatic animal"}
在红宝石中 < 1.9
value_hash = Hash[k1, h1[k1]]
p value_hash # {"fish"=>"aquatic animal"}
最简单的答案:
def find(k1)
{k1 => h1[k1]}
end
这将返回您需要的 {'fish' => 'aquatic animal'}。
因为您已经拥有了它,所以无需费力地获得钥匙!:-)
最简单和本地的方式是使用方法slice
。
h1 = { fish: 'aquatic animal', tiger: 'big cat', dog: 'best human friend' }
k1 = :fish
去做就对了:
h1.slice(k1)
# => {:fish=>"aquatic animal"}
更好的是,您可以为此使用多个键,例如,k1 和 k3
k1 = :fish
k3 = :dog
h1.slice(k1, k3)
# => {:fish=>"aquatic animal", :dog=>"best human friend"}
清晰、简单、高效
我得到了一个解决方法,通过从键值对创建一个新的哈希,然后使用 puts h1 输出它的值