2016-08-02 12 views
-1

ich eine Struktur wie diese erstellen müssen:Verwendung von setdefault statt defaultdict

D = {i:{j:{k:0,l:1,m:2}},a:{b:{c:0,d:4}}} 

So kann diese mit defaultdict erfolgen:

D = defaultdict(defaultdict(Counter)) 

Wie verwende ich setdefault hier?

EDIT:

Ist es möglich, setdefault und defaultdict zu kombinieren?

+0

Ich glaube, du meintest 'D = defaultdict (lambda: defaultdict (Counter))'? –

+0

BTW, warum willst du 'setdefault' anstelle von' defaultdict' verwenden? –

Antwort

0

Um ein Multi-Level-Wörterbuch mit setdefault() bauen Sie wiederholt bräuchten Zugriff auf die Schlüssel wie folgt aus:

>>> from collections import Counter 
>>> d = {} 
>>> d.setdefault("i", {}).setdefault("j", Counter()) 
Counter() 
>>> d 
{'i': {'j': Counter()}} 

Um die Verwendung für neue Schlüssel verallgemeinern Sie eine Funktion verwenden:

def get_counter(d, i, j): 
    return d.setdefault(i, {}).setdefault(j, Counter()) 
+0

Ich muss die Verwendung für neue Schlüssel auch verallgemeinern ... also wie mache ich das? – Indhuja

Verwandte Themen