2017-01-10 5 views
1

Ich habe ein Problem beim Aktualisieren einer Liste in einem verschachtelten Standarddict.Verschachtelte Defaultdict in Python

Hier ist mein Code:

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]}) 

Hier ist der Ausgang:

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

Die gewünschte Ausgabe ist:

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

Hinweis der zweite Punkt für Video in die hinzugefügt wurde Videoliste.

Antwort

5

Sie haben nicht verschachtelt irgendwelche defaultdict s, so dass tun:

nested_dict = defaultdict(lambda: defaultdict(list)) 

und

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

Und da gehen wir. Danke Ryan! – ethanenglish

Verwandte Themen