我正试图编写一个ruby程序来计算该值在哈希中所有值中出现的次数。为此,我正在创建一种方法-
count_value(hash,value(
def count_value(hash, value)
Hash[hash.group_by { |k, value| value }.map { |k, value| [k, value.count] }]
end
puts count_value(hash, 2)
但是,我没有得到实际的结果。我想要这种格式的结果:-
count_value(hash, 2) => 1
count_value(hash, 3) => 1
count_value(hash, 5) => 2
count_value(hash, 10) => 0
如何做到这一点?我在代码片段中犯了什么错误?
h = {a: 5, b:2, c: 3, d: 5}
value_to_be_counted = 5
p h.count{|k, v| v == value_to_be_counted } # => 2
尝试以下代码:
def get_hash_dup_count(hash_data)
arr_elem_count = Hash.new(0)
hash_values = hash_data.values
puts "Hash values are : #{hash_values}"
hash_values.each do |v|
arr_elem_count[v] += 1
end
return arr_elem_count
end
def count_value(hash_data, value)
arr_val_count = get_hash_dup_count(hash_data)
puts arr_val_count[value]
end
hash_data = {
"x" => 1,
"y" => 2,
"z" => 1,
"k" => 0
}
count_value(hash_data, 2)