100, "Dog" => 5, "Bird" => 2, "Snake" => 1-6ren">
gpt4 book ai didi

ruby - 从另一个哈希中的相应值中减去哈希中的值

转载 作者:数据小太阳 更新时间:2023-10-29 07:05:46 24 4
gpt4 key购买 nike

我希望能够在 Ruby 中减去两个哈希值并得到第三个哈希值。

两个哈希看起来像这样:

h1 = {"Cat" => 100, "Dog" => 5, "Bird" => 2, "Snake" => 10}
h1.default = 0

h2 = {"cat" => 50, "dog" => 3, "BIRD" => 4, "Mouse" => 75, "Snake" => 10}
h2.default = 0

我希望能够像这样在 h1 上调用一个方法:

h1.difference(h2)

并得到这个散列作为结果:

{"Cat" => 50, "Dog" => 2, "BIRD" => -2, "Mouse" => -75}

我想创建一个新的散列,其中包含两个散列中的键,新散列的值是第一个散列中键的值减去第二个散列中该键的值。要注意的是,无论键的大小写如何,我都希望此 Hash 方法能够正常工作。换句话说,我希望“Cat”与“cat”匹配。

这是我目前所拥有的:

class Hash
def difference(another_hash)
(keys + another_hash.keys).map { |key| key.strip }.uniq.inject(Hash.new(0)) { |acc, key| acc[key] = (self[key] - another_hash[key]); acc }.delete_if { |key, value| value == 0 }
end
end

这没问题,但不幸的是,结果不是我想要的。

如有任何帮助,我们将不胜感激。

最佳答案

如何将散列转换为集合。

require 'set'

h1 = {"Cat" => 100, "Dog" => 5, "Bird" => 2, "Snake" => 10}
h1.default = 0

h2 = {"cat" => 50, "dog" => 3, "BIRD" => 4, "Mouse" => 75, "Snake" => 10}
h2.default = 0

p (h1.to_set - h2.to_set)
#=> #<Set: {["Cat", 100], ["Dog", 5], ["Bird", 2]}>

关于ruby - 从另一个哈希中的相应值中减去哈希中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com