У меня есть хеш, в котором есть массив значений для каждого ключа:
h = {
'a' => ['c', 'b', 'd'],
'b' => ['c', 'b', 'f', 'g']
}
Мне нужно вернуть хеш g
, который дает количество «уникальных» значений каждого ключа в h
. Например, h['a']
имеет 2 значения ('c'
и b'
), которые не являются уникальными в том смысле, что они присутствуют в h['b']
. В этом случае значение 'a'
в g
должно равняться 1
, поскольку 'd'
является единственным уникальным элементом h['a']
. То же самое касается ключа 'b'
. Он имеет 2 общих значения с 'a'
в h
, но также 2 уникальных ('f'
и g'
). Так что в моем случае g
должно равняться {'a' => 1,
b => 2}
.
Я пробовал h.select { |_,a| a.size == 1 }
, но он возвращает пустой хеш.
Кроме того, у меня есть способ вернуть уникальные значения, но когда я пытаюсь написать тест Rspec, он не проходит, у меня есть следующее решение:
@split_log_file.each { |key, array|
"#{key} has #{array.uniq.length} unique visitors" }