在以下代码中:
如果我想获得:a(“apple”)的值,我会使用“hash [:a]”。如果我想获得“apple”(:a)的密钥,我会使用hash.key(“apple”)。
但是我怎么能返回哈希值对?
hash = {:a => "apple", :b => "banana"}
e.g。检查哈希是否包含:a,如果它确实返回以下
=> {:a => "apple"}
感谢。
答案 0 :(得分:1)
如果您使用Rails,则可以使用Hash::slice方法:
hash.slice(:a)
答案 1 :(得分:0)
您也可以使用Hash.entries
。条目作为每个键+值对的数组数组返回,并且可以使用splat运算符轻松转换为哈希。
hash.entries.each do |entry|
p Hash[*entry] if entry.include?(:a)
end
=> {:a=>"apple"}
根据user2864740的建议,也可以使用Hash#assoc(如果你使用的是ruby> 1.9):
Hash[*(hash.assoc(:a))]
答案 2 :(得分:0)
如果我有哈希:
hash = {:a => "apple", :b => "banana"}
我想以子哈希的形式从中提取一个特定的键/值对,我会这样做:
_key = :a
Hash[_key, hash[_key]] # => {:a=>"apple"}
并有条件地做到:
Hash[_key, hash[_key]] if hash.key?(_key)
但是,我不确定为什么要传递单元素哈希。如果我知道密钥,我可以轻松抓住价值。如果我需要将它们都传递给另一个方法,我会把它作为一个数组来做:
[:a, "apple"]
答案 3 :(得分:0)
尝试:Hash#select
hash = {:a => "apple", :b => "banana"}
hash.select {|k| k == :a} #=> {:a=>"apple"}