Единственное, что словарь может иметь дубликаты, это значения. Словарь - это ключ, хранилище значений, где ключи уникальны. В Python вы можете создать словарь так:
d1 = {k1: v1, k2: v2, k3: v1}
d2 = [k1, v1, k2, v2, k3, v1]
d1
было создано с использованием обычной словарной нотации. d2
был создан из list
с четным количеством элементов. Обратите внимание, что обе версии имеют повторяющиеся значения.
Если у вас есть функция, которая возвращает количество уникальных значений в словаре, вы можете сказать что-то вроде:
len(d1) != func(d1)
К счастью, Python делает это легко, используя sets
. Простого преобразования d1
в set
недостаточно. Давайте сделаем наши ключи и значения реальными, чтобы вы могли запустить некоторый код.
v1 = 1; v2 = 2
k1 = "a"; k2 = "b"; k3 = "c"
d1 = {k1: v1, k2: v2, k3: v1}
print len(d1)
s = set(d1)
print s
Вы заметите, что s
также имеет трех членов и выглядит как set(['c', 'b', 'a'])
. Это потому, что простое преобразование использует только ключи в dict. Вы хотите использовать значения следующим образом:
s = set(d1.values())
print s
Как вы можете видеть, есть только два элемента, потому что значение 1 встречается два раза. Один из способов просмотра набора состоит в том, что это список без дублирующих элементов. Вот что печатает, когда печатает набор в виде списка в скобках. Еще один способ взглянуть на это - как диктат без ценностей. Как и во многих действиях по обработке данных, вам нужно начать с selecting
интересующих вас данных, а затем манипулировать ими. Начните с выбора значений из dict, затем создайте набор, затем посчитайте и сравните.