varNames = sorted(variants)
combinations = [dict(zip(varNames, prod)) for prod in it.product(*(variants
    [varName] for varName in varNames))]
Combinations from dictionary with list values using Python