2015-06-16 3 views
-2

У меня есть словарь.Удалить повторяющиеся значения из defaultdict python

a = {6323: [169635, 169635, 169635], 6326: [169634,169634,169634,169634,169634,169634,169638,169638,169638,169638], 6425: [169636,169636,169636,169639,169639,169640]} 

Как удалить повторяющиеся значения для каждой клавиши в словаре a? И чтобы значения стали [значение, вхождения]?

Выход должен быть

b = {6323: [(169635, 3)], 6326: [(169634, 6), (19638, 4)], 6425: [(169636, 3), (19639, 2), (19640, 1)]}. 

EDIT: выход К сожалению, я вставил dict.items(), чтобы они не были словари. Я исправил это сейчас.

Также был изменен вопрос, чтобы быть более понятным.

+1

Это наборы с кортежами (и невозможными с изменяемыми объектами списка в значениях), а не словарями. Словари имеют двоеточие между ключами и значениями, а не запятыми и круглыми скобками. –

+1

Это наборы, а не словари ... – Zizouz212

+1

Кроме того, вам не хватает ')' где-то –

ответ

0

Я предлагаю итерацию по элементам, и для каждого значения создайте значение defaultdict, увеличивающее возникновение. Затем преобразуйте этот список в свой список кортежей (с помощью метода item) и оставьте это в выходном словаре.

b = {} 
for k,v in a.items(): 
    d = defaultdict(int) 
    for i in v: 
     d[i] += 1 
    b[k] = d.items() 
+0

Спасибо! Это подходит для меня. –