简体   繁体   English

Ruby:如何在哈希结构中过滤以获得<>“1”的所有键?

[英]Ruby: How to filter in a hash structure to get all the keys which are <>“1”?

I want to find some elegant way to achieve this. 我想找到一些优雅的方法来实现这一目标。 Maybe like follwing: 也许像下面这样:

hash={"1"=>"1","2"=>"2"}
r=[]
hash.each do |k,v|
    if k!="1"
       r<<k
    end
end
puts r

Any better way to achieve this? 有没有更好的方法实现这一目标

You can use "array difference": 你可以使用“数组差异”:

hash.keys - ['1']
#=> ["2"]
puts r = hash.keys.select { |i| i != "1" }

Here's one way: 这是一种方式:

r = hash.select { |k,v,| k != "1" }
puts r

Hope this helps, 希望这可以帮助,
Ben

hash.reject{|k,v| k == "1"}

I like reject over select with a negative test because it's more readable. 我喜欢拒绝选择负面测试,因为它更具可读性。 "Reject values where X == '1' is true" versus "collect values where x != '1' is true". “拒绝X =='1'为真的值”与“收集值,其中x!='1'为真”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM