2017-01-10 10 views
1

У меня проблема с обновлением списка вложенном defaultdict.Вложенные значения по умолчанию в Python

Вот мой код:

a = ['20160115', 'shadyside medical building', 1, 'Review'] 
b = ['20160115', 'shadyside medical building', 1, 'Video'] 
c = ['20160215', 'shadyside medical building', 1, 'Video'] 
d = ['20160215', 'medical building',    1, 'Video'] 
f = [a,b,c,d] 

nested_dict = defaultdict(dict) 

for date,keyword,pos,feature in f: 
    nested_dict[keyword].update({feature : [pos]}) 
    nested_dict[keyword].update({feature : [pos]}) 

Вот результат:

{'shadyside medical building': 
          {'Review': [1], 
          'Video': [1]}, 
'medical building': 
        {'Video': [1]}} 

Нужный выход:

{'shadyside medical building': 
          {'Review': [1], 
          'Video': [1,1]}, 
'medical building': 
        {'Video': [1]}} 

Обратите внимание на второй пункт для видео был добавлен в список видео.

ответ

5

Вы не гнездились никаких defaultdict s, так что сделать это:

nested_dict = defaultdict(lambda: defaultdict(list)) 

и

nested_dict[keyword][feature].append(pos) 
+0

И там мы идем. Спасибо, Райан! – ethanenglish