从 ruby​​ 哈希中删除特定的键(和值)

Dar*_*rby 1 ruby arrays hash ruby-on-rails

我有一个单词和计数的哈希值

result_hash
# => {"should"=>1790.8069584736252,
# "is"=>1580.7037037037037,
# "may"=>1562.1964085297418,
# "used"=>1452.4938271604938,
Run Code Online (Sandbox Code Playgroud)

以及我需要从哈希中删除(键/值对)的抑制词数组。

我尝试了except 和 extract,似乎没有任何内容被删除:即使在我使用 except 之后, Was也在抑制列表和结果哈希中。

suppression_list.class    # => Array
suppression_list.first.class    # => String
result_hash.except(suppression_list)["was"]    # => 736.1234567901234
suppression_list.index("was")    # => 443
result_hash["was"]    # => 736.1234567901234
new = result_hash.except(suppression_list)
new["was"]    # => 736.1234567901234
new = result_hash.except!(suppression_list)
new["was"]    # => 736.1234567901234
result_hash["was"]    # => 736.1234567901234
Run Code Online (Sandbox Code Playgroud)

请帮助我从 中删除抑制列表(键和值)result_hash。

fal*_*tru 5

Hash#except,Hash#except!不接受键数组,但接受键作为任意参数。您需要使用*运算符将​​数组转换为方法参数:

result_hash.except(*suppression_list)
Run Code Online (Sandbox Code Playgroud)

  • @Darby,参数名称前面的“*”表示它接受任意数量的参数。参数传递被收集到数组中并作为参数传递。 (2认同)