Looking for python Answers? Try Ask4KnowledgeBase
Looking for python Keywords? Try Ask4Keywords

Python Language collections.defaultdict


Exemple

collections.defaultdict (default_factory) renvoie une sous-classe de dict qui a une valeur par défaut pour les clés manquantes. L'argument doit être une fonction qui renvoie la valeur par défaut lorsqu'elle est appelée sans arguments. Si rien n'est passé, la valeur par défaut est None .

>>> state_capitals = collections.defaultdict(str)
>>> state_capitals
defaultdict(<class 'str'>, {})

renvoie une référence à un defaultdict qui créera un objet de chaîne avec sa méthode default_factory.

Une utilisation typique de defaultdict est d'utiliser l'un des types intégrés tels que str , int , list ou dict comme default_factory, car ceux-ci renvoient des types vides lorsqu'ils sont appelés sans arguments:

>>> str()
''
>>> int()
0
>>> list
[]

L'appel du defaultdict avec une clé qui n'existe pas ne produit pas d'erreur comme dans un dictionnaire normal.

>>> state_capitals['Alaska']
''
>>> state_capitals
defaultdict(<class 'str'>, {'Alaska': ''})

Un autre exemple avec int :

>>> fruit_counts = defaultdict(int)
>>> fruit_counts['apple'] += 2  # No errors should occur
>>> fruit_counts
default_dict(int, {'apple': 2})
>>> fruit_counts['banana']  # No errors should occur
0
>>> fruit_counts  # A new key is created
default_dict(int, {'apple': 2, 'banana': 0})

Les méthodes de dictionnaire normales fonctionnent avec le dictionnaire par défaut

>>> state_capitals['Alabama'] = 'Montgomery'
>>> state_capitals
defaultdict(<class 'str'>, {'Alabama': 'Montgomery', 'Alaska': ''})

Utiliser list comme default_factory va créer une liste pour chaque nouvelle clé.

>>> s = [('NC', 'Raleigh'), ('VA', 'Richmond'), ('WA', 'Seattle'), ('NC', 'Asheville')]
>>> dd = collections.defaultdict(list)
>>> for k, v in s:
...     dd[k].append(v)
>>> dd
defaultdict(<class 'list'>, 
    {'VA': ['Richmond'], 
     'NC': ['Raleigh', 'Asheville'], 
     'WA': ['Seattle']})