通过匹配字符从散列中删除键
Delete keys from a hash by matching chars
我有一个包含几百个值的散列,其中一些是:
plays = {"week 1" => 0, "week 2" => 0, etc}
我想删除任何 key/value 对,其键中包含单词 "week"
。我似乎不能用 plays.delete
做到这一点。这样做的最佳方法是什么?
你可以使用 Hash#delete_if
.
play.delete_if { |k,_| /week/ === k }
我用过这个方法:Regexp#===
设:
plays = { "week 1" => 0, "week 2" => 0, "dog" => "woof" }
如果不想破坏plays
,使用Hash#reject:
plays.reject { |k,v| k.include?('week') }
#=> "woof"
plays
#=> {"week 1"=>0, "week 2"=>0, "dog"=>"woof"}
(我最初有 k =~ /week/
。我同意@sawa 的观点,在这种情况下最好避免使用正则表达式。)
我有一个包含几百个值的散列,其中一些是:
plays = {"week 1" => 0, "week 2" => 0, etc}
我想删除任何 key/value 对,其键中包含单词 "week"
。我似乎不能用 plays.delete
做到这一点。这样做的最佳方法是什么?
你可以使用 Hash#delete_if
.
play.delete_if { |k,_| /week/ === k }
我用过这个方法:Regexp#===
设:
plays = { "week 1" => 0, "week 2" => 0, "dog" => "woof" }
如果不想破坏plays
,使用Hash#reject:
plays.reject { |k,v| k.include?('week') }
#=> "woof"
plays
#=> {"week 1"=>0, "week 2"=>0, "dog"=>"woof"}
(我最初有 k =~ /week/
。我同意@sawa 的观点,在这种情况下最好避免使用正则表达式。)