我有一个哈希值h1和密钥k1。我需要为散列中的给定键返回完整的键值对。
喜欢关键'鱼' 我需要打印'fish'=> '水生动物'
@ h1,打印所有键值对。我需要打印给定键的键值对
我对红宝石很陌生,很抱歉这个虚假的问题。
答案 0 :(得分:10)
有一种方法,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 :(得分:7)
in ruby> = 1.9
value_hash = Hash[*h1.assoc(k1)]
p value_hash # {"fish"=>"aquatic animal"}
in ruby< 1.9
value_hash = Hash[k1, h1[k1]]
p value_hash # {"fish"=>"aquatic animal"}
答案 2 :(得分:2)
最简单的答案:
def find(k1)
{k1 => h1[k1]}
end
这将返回{'fish'=> '水生动物'}这就是你所需要的。
因为你已经拥有了它,所以没有必要跳过篮球来获得钥匙! : - )答案 3 :(得分:2)
最简单和原生的方法是使用方法 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"}
清晰、简单、高效
答案 4 :(得分:0)
我通过从键值对创建新哈希,然后使用puts h1输出其值来解决方法