Wortreferenzen sind eine vorteilhafte Methode, um Informationen für eine spätere Wiederherstellung nach Namen (Schlüssel) zu speichern. Schlüssel müssen einmalige, unveränderliche Artikel sein und sind gewöhnliche Zeichenketten. Die Eigenschaften in einer Wortreferenz können alles sein. Bei einigen Anwendungen handelt es sich bei den Qualitäten um einfache Arten, z.B. ganze Zahlen und Zeichenketten.

Umso faszinierender wird es, wenn es sich bei den Qualitäten in einer Wortreferenz um Anhäufungen handelt (Aufzeichnungen, Diktiere usw.). Für diese Situation muss der Wert (ein vakanter Ablauf oder ein Diktat) eingeführt werden, wenn der erste Durchlauf durch einen bestimmten Schlüssel verwendet wird. Während dies im Allgemeinen physisch einfach zu bewerkstelligen ist, mechanisiert und verbessert der Typ des Standard-Dikts diese Art von Aufgaben.

Ein Defaultdict funktioniert genau wie ein typisches Diktat, jedoch wird es mit einer Kapazität (“Default Processing Plant”) instanziiert, die keine Streitigkeiten zulässt und dem Default einen Anreiz zu einem nicht existierenden Schlüssel gibt.

Ein Defaultdict wird niemals einen KeyError auslösen. Jeder Schlüssel, der nicht existiert, erhält den Wert vom Standard-Herstellungswerk zurückgegeben.

>>> aus Sammlungsimport-Defaultdict

>>> ice_cream = defaultdict(lambda: ‘Vanille’)

>>> 

>>> ice_cream = defaultdict(lambda: ‘Vanille’)

>>> ice_cream[‘Sarah’] = ‘Chunky Monkey’ = ‘Chunky Monkey

>>> Eiscreme[‘Abdul’] = ‘Butter-Pekannuss’.

>>> Eiscreme drucken[‘Sarah’]

Chunky Monkey

>>> Eiscreme drucken[‘Joe’]

Vanille

>>> 

Stellen Sie sicher, dass Sie den Kapazitätsartikel an defaultdict() übergeben. Versuchen Sie, den Capacity-Artikel nicht aufzurufen, z.B. defaultdict(func), nicht defaultd.ict(func()).

In dem begleitenden Modell wird ein Defaultdict zur Zählung verwendet. Die Standard-Produktionsstätte ist int, die somit eine Standardschätzung von Null hat. (Anmerkung: “lambda: 0″ würde unter diesem Umstand ebenfalls funktionieren). Für jede Nahrung im Heruntergefahrenen wird der Wert um eins erhöht, wobei der Schlüssel die Nahrung ist. Wir müssen nicht sicherstellen, dass die Nahrung ab jetzt ein Schlüssel ist – sie wird die Standardschätzung von Null verwenden.

>> aus Sammlungen Importvorgaben

>>> food_list = ‘spam spam spam spam spam spam spam spam spam spam spam spam eggs spam’.split()

>>> food_count = defaultdict(int) # Standardwert von int ist 0

>>> für Lebensmittel in food_list:

… food_count[Lebensmittel] += 1 # Wert des Elements um 1 erhöhen

defaultdict(<type ‘int’>, {‘eggs’: 1, ‘spam’: 7})

>>> 

Im nächsten Beispiel beginnen wir mit einer Liste von Staaten und Städten. Wir wollen ein Wörterbuch erstellen, in dem die Schlüssel die Abkürzungen der Staaten und die Werte Listen aller Städte für diesen Staat sind. Um dieses Listenwörterbuch zu erstellen, verwenden wir ein Standardwörterbuch mit einer Standardlistenfabrik. Für jeden neuen Schlüssel wird eine neue Liste erstellt.

>>> aus Sammlungsimport-Defaultdict

>>> city_list = [(‘TX’,’Austin’), (‘TX’,’Houston’), (‘NY’,’Albany’), (‘NY’, ‘Syracuse’), (‘NY’, ‘Buffalo’), (“NY”, “Rochester”), (“TX”, “Dallas”), (“CA”, “Sacramento”), (“CA”, “Palo Alto”), (“GA”, “Atlanta”)]

>>> 

>>> Städte_nach_Staat = Standarddikt(liste)

>>> für Staat, Stadt in der Städteliste:

… Städte_nach_Staat[Bundesland].append(Stadt)

für Staat, Städte in cities_by_state.iteritems():

… Staat drucken, ‘, ‘.beitreten(städte)

NY Albany, Syrakus, Büffel, Rochester

CA Sacramento, Palo Alto

GA Atlanta

TX Austin, Houston, Dallas