Wie erstelle ich ein Standarddikt aus einem Wörterbuch?

84

Wenn ich habe, d=dict(zip(range(1,10),range(50,61)))wie kann ich ein collections.defaultdictaus dem bauen dict?

Das einzige Argument, defaultdictdas zu nehmen scheint, ist die Factory-Funktion. Muss ich das Original initialisieren und dann durchgehen dund das aktualisieren defaultdict?

Karthick
quelle

Antworten:

96

Lesen Sie die Dokumente :

Das erste Argument gibt den Anfangswert für das Attribut default_factory an. Der Standardwert ist Keine. Alle verbleibenden Argumente werden so behandelt, als ob sie an den Diktatkonstruktor übergeben würden , einschließlich der Schlüsselwortargumente.

from collections import defaultdict
d=defaultdict(int, zip(range(1,10),range(50,61)))

Oder ein Wörterbuch gegeben d:

from collections import defaultdict
d=dict(zip(range(1,10),range(50,61)))
my_default_dict = defaultdict(int,d)
Jochen Ritzel
quelle
3
Ist es möglich, diesen Ansatz für verschachtelte Diktate zu erweitern? Folgendes funktioniert nicht wie beabsichtigt: default_dict = defaultdict(None,{"a":1,"b":{"c":3}})Beispielsweise wird default_dict["e"]ein KeyError ausgelöst, anstatt None zurückzugeben
alancalvitti
4
@alancalvitti Das liegt daran, dass das Übergeben Nonenicht bedeutet, dass für unbekannte Schlüssel None generiert wird. Es wird überhaupt keiner verwendet. Sie müssen tundefaultdict(lambda: None, {....})
Eric Darchis
1

Sie können ein Standarddikt aus dem Diktat erstellen, indem Sie das Diktat als zweites Argument übergeben.

from collections import defaultdict

d1 = {'foo': 17}
d2 = defaultdict(int, d1)

print(d2['foo'])  ## should print 17
print(d2['bar'])  ## should print 1 (default int val )
Muhsin Mohammed
quelle
0

defaultdict ist eine Methode aus Sammlungen, die keinen Schlüsselfehler zurückgibt, wenn kein Element vorhanden ist.

Prem
quelle