Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/11/2020, à 18:23

chris7522

Sous-classe defaultdict dans module collections(python)

Bonsoir a toutes et a tous,
Je ne comprends pas  a quoi sert defaultdict . Concrètement ,comment fonctionne t-elle dans un exemple  ?
Merci de votre aide .

Je ne comprends pas le resultat de ce bout de code par exemple :

tuples = [ 
    ...:     (1, 2), 
    ...:     (2, 1), 
    ...:     (1, 3), 
    ...:     (2, 4), 
    ...: ]                                                             

In [18]: from collections import defaultdict 
    ...: resultat = defaultdict(list) 
    ...:   
    ...: for x, y in tuples: 
    ...:     resultat[x].append(y) 
    ...:  
    ...: for key, value in resultat.items(): 
    ...:     print(key, value) 
    ...:                                                               
1 [2, 3]
2 [1, 4]

Dernière modification par chris7522 (Le 29/11/2020, à 18:58)

Hors ligne

#2 Le 29/11/2020, à 19:43

pingouinux

Re : Sous-classe defaultdict dans module collections(python)

Bonsoir,
Je ne connaissais pas non plus collections.defaultdict.
Il suffit d'ajouter quelques impressions dans le script pour voir comment les éléments sont regroupés.

$ cat defdic.py
tuples = [ (1, 2), (2, 1), (1, 3), (2, 4), ]                                                             

from collections import defaultdict 
resultat = defaultdict(list) 
print(resultat)
  
for x, y in tuples: 
    resultat[x].append(y) 
    print("x=%d y=%d %s"%(x,y,resultat))
print() 
for key, value in resultat.items(): 
    print(key, value)
$ python3 defdic.py
defaultdict(<class 'list'>, {})
x=1 y=2 defaultdict(<class 'list'>, {1: [2]})
x=2 y=1 defaultdict(<class 'list'>, {1: [2], 2: [1]})
x=1 y=3 defaultdict(<class 'list'>, {1: [2, 3], 2: [1]})
x=2 y=4 defaultdict(<class 'list'>, {1: [2, 3], 2: [1, 4]})

1 [2, 3]
2 [1, 4]

Hors ligne

#3 Le 29/11/2020, à 20:24

chris7522

Re : Sous-classe defaultdict dans module collections(python)

Ok merci
Je ne comprends pas trop ce que fait :

for x, y in tuples: 
    resultat[x].append(y) 

Hors ligne

#4 Le 29/11/2020, à 21:17

chris7522

Re : Sous-classe defaultdict dans module collections(python)

C'est bon , je viens de comprendre !
J'ai le cerveau lent ... sad

J'ai lu que :

Defaultdict sert à créer un dictionnaire avec constructeur par défaut pour toute nouvelle clef.
Il affecte un constructeur d'objet appelé par défaut lorsque la clef est créée.

Dernière modification par chris7522 (Le 30/11/2020, à 06:47)

Hors ligne