def dict_cartesian_product(d):
    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 [e1,e2,e3,e4,e5,e6]:
	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

