Les références textuelles sont une méthode avantageuse pour stocker des informations en vue d’une récupération ultérieure par nom (clé). Les clés doivent être des articles uniques, sans monnaie, et sont des chaînes de caractères ordinaires. Les qualités d’une référence de mot peuvent être n’importe quoi. Pour certaines applications, les qualités sont des triages simples, par exemple, des nombres entiers et des chaînes de caractères.

Cela devient d’autant plus fascinant lorsque les qualités d’une référence de mot sont des accumulations (records, dicts, etc.). Dans ce cas, la valeur (un résumé ou un dict vide) doit être introduite dès la première utilisation d’une clé donnée. Bien que cela soit généralement simple à faire physiquement, le type de dict par défaut mécanise et améliore ce genre de tâches.

Un défaut fonctionne exactement comme un défaut typique, mais il est instauré avec une capacité (“usine de traitement par défaut”) qui ne fait l’objet d’aucune contestation et qui incite le défaut à une clé inexistante.

Un défaut de paiement ne provoquera jamais une erreur de frappe. Toute clé qui n’existe pas reçoit la valeur retournée par l’usine de fabrication par défaut.

>>> à partir de l’importation de collections par défaut

>>> glace = défaut (lambda : ‘Vanille’)

>>> 

>>> glace = défaut (lambda : ‘Vanille’)

>>> crème glacée [Sarah] = “Singe en morceaux

>>> glace [Abdul] = “Beurre de noix de pécan

>>> impression de la glace [Sarah]

Singe en morceaux

>>> impression de la glace [Joe]

Vanille

>>> 

Assurez-vous de passer l’article de capacité à defaultdict(). Essayez de ne pas appeler la capacité, par exemple defaultdict(func), et non defaultd.ict(func()).

Dans le modèle ci-joint, une valeur par défaut est utilisée pour le décompte. L’usine de fabrication par défaut est int, qui a donc une estimation par défaut de zéro. (Note : “lambda : 0″ fonctionnerait également dans cette circonstance). Pour chaque aliment dans le décompte, la valeur est augmentée de un, la clé étant l’aliment. Nous n’avons pas à nous assurer que la nourriture est désormais une clé – elle utilisera l’estimation par défaut de zéro

>> à partir des défauts d’importation de collections

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

>>> food_count = defaultdict(int) # la valeur par défaut de int est 0

>>> pour la nourriture dans food_list :

… food_count

[food]

+= 1 # incrémente la valeur de l’élément de 1

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

>>> 

Dans l’exemple suivant, nous commençons par une liste d’États et de villes. Nous voulons construire un dictionnaire dont les clés sont les abréviations des États et les valeurs sont les listes de toutes les villes de cet État. Pour construire ce dictionnaire de listes, nous utilisons un defaulttdict avec une factory of list par défaut. Une nouvelle liste est créée pour chaque nouvelle clé.

>>> à partir de l’importation de collections par défaut

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

>>> 

>>> villes_par_état = defaultdict(liste)

>>> pour l’état, la ville dans la liste des villes :

… cities_by_state[state].append(city)

pour l’État, les villes dans cities_by_state.iteritems() :

… imprimer l’état, ‘, ‘.joindre(villes)

NY Albany, Syracuse, Buffalo, Rochester

CA Sacramento, Palo Alto

GA Atlanta

TX Austin, Houston, Dallas