Subtrahieren Sie die Werte in Hash von den entsprechenden Werten in einem anderen Hash
Ich möchte in der Lage sein, zwei Hashes zu subtrahieren und einen dritten Hash in Ruby zu erhalten.
Die beiden Hashes sehen folgendermaßen aus:
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
Ich möchte in der Lage sein, eine Methode auf h1 wie folgt aufzurufen:
h1.difference(h2)
und bekomme diesen Hash als Ergebnis:
{"Cat" => 50, "Dog" => 2, "BIRD" => -2, "Mouse" => -75}
Ich möchte einen neuen Hash mit Schlüsseln aus beiden Hashes und den Werten des neuen Hashs erstellen, um den Wert des Schlüssels im ersten Hash abzüglich des Werts dieses Schlüssels im zweiten Hash zu erhalten. Der Haken ist, dass ich möchte, dass diese Hash-Methode unabhängig vom Fall der Schlüssel funktioniert. Mit anderen Worten, ich möchte, dass "Katze" mit "Katze" übereinstimmt.
Folgendes habe ich bisher:
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
Das ist in Ordnung, aber leider ist das Ergebnis nicht das, was ich will.
Jede Hilfe wäre dankbar.