Bonjour!
Je cherche à écrire une fonction dont les spécifications seraient:
- elle prend en argument un dictionnaire,
- les valeurs du dictionnaire sont des scalaires ou des listes,
- cette fonction est un iterator qui itere sur tous les dictionnaires que l'on peut former en prenant au choix un élément dans les valeurs du dictonnaire d'entrée (pas très clair...)
Voici 'stub' (on dit comme ça?) de la fonction: (je n'arrive pas mettre d'indentation dans le post, donc je le joins en fichier)
def dict_cartesian_product(d):\n
e1 = {'un':'1a','deux':'2','trois':'3','quatre':'4','cinq':'5a'}
e2 = {'un':'1a','deux':'2','trois':'3','quatre':'4','cinq':'5b'}
e3 = {'un':'1b','deux':'2','trois':'3','quatre':'4','cinq':'5a'}
e4 = {'un':'1b','deux':'2','trois':'3','quatre':'4','cinq':'5b'}
e5 = {'un':'1c','deux':'2','trois':'3','quatre':'4','cinq':'5a'}
e6 = {'un':'1c','deux':'2','trois':'3','quatre':'4','cinq':'5b'}
for e in:
yield e
d = {'un':['1a','1b','1c'],
'deux':'2',
'trois':'3',
'quatre':'4',
'cinq':['5a','5b']}
for e in dict_cartesian_product(d):
print e
Pour créer cette fonction j'essaie de m'inspiré de ça
http://docs.python.org/3.0/library/itertools.html?highlight=product#itertools.product
mais je galère un peu...
Je me demande si je ne pourrais pas aussi tirer profit de certaines fonction de numpy.
Si une bonne âme passe par là et peu m'aider...