我有一个哈希表 h1 和一个键 k1。 我需要返回给定键的完整键值对。
比如,对于键 'fish',我需要打印 'fish' => '水生动物'
@h1 打印所有的键值对,我需要一种方法来打印给定键的键值对
我对 Ruby 还很陌生,所以对于这个新手问题请见谅。
我有一个哈希表 h1 和一个键 k1。 我需要返回给定键的完整键值对。
比如,对于键 'fish',我需要打印 'fish' => '水生动物'
@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"}
在Ruby的版本>= 1.9中
value_hash = Hash[*h1.assoc(k1)]
p value_hash # {"fish"=>"aquatic animal"}
在Ruby < 1.9版本中
value_hash = Hash[k1, h1[k1]]
p value_hash # {"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"}
清晰、简单、高效
def find(k1)
{k1 => h1[k1]}
end
我找到了一个解决方法,通过创建一个新的哈希表,从键值对中提取其值,并使用puts h1输出它的值。
[]
访问,因此puts "fish => #{h1["fish"]}
。 - Michael Berkowskihash.inspect
返回的格式化字符串形式输出结果。因此,我在想Ruby是否直接支持这种指定键的格式化输出方式。我的测试用例由于格式问题而无法通过。 - Himz