Cartesian product giving a dictionary

冷暖自知 提交于 2019-12-02 02:04:29

Zip your values with the keys:

keys = 'brand', 'speed', 'model'

ll = [dict(zip(keys, combo)) for combo in product(brand, speed, model)]

Demo:

>>> from itertools import product
>>> from pprint import pprint
>>> brand = ["Audi", "Mercedes"]
>>> speed = [130, 150]
>>> model = ["sport", "family"]
>>> keys = 'brand', 'speed', 'model'
>>> [dict(zip(keys, combo)) for combo in product(brand, speed, model)]
[{'speed': 130, 'brand': 'Audi', 'model': 'sport'}, {'speed': 130, 'brand': 'Audi', 'model': 'family'}, {'speed': 150, 'brand': 'Audi', 'model': 'sport'}, {'speed': 150, 'brand': 'Audi', 'model': 'family'}, {'speed': 130, 'brand': 'Mercedes', 'model': 'sport'}, {'speed': 130, 'brand': 'Mercedes', 'model': 'family'}, {'speed': 150, 'brand': 'Mercedes', 'model': 'sport'}, {'speed': 150, 'brand': 'Mercedes', 'model': 'family'}]
>>> pprint(_)
[{'brand': 'Audi', 'model': 'sport', 'speed': 130},
 {'brand': 'Audi', 'model': 'family', 'speed': 130},
 {'brand': 'Audi', 'model': 'sport', 'speed': 150},
 {'brand': 'Audi', 'model': 'family', 'speed': 150},
 {'brand': 'Mercedes', 'model': 'sport', 'speed': 130},
 {'brand': 'Mercedes', 'model': 'family', 'speed': 130},
 {'brand': 'Mercedes', 'model': 'sport', 'speed': 150},
 {'brand': 'Mercedes', 'model': 'family', 'speed': 150}]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!