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?

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)

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 )

0

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.