首页 > 解决方案 > Python创建字典组合

问题描述

我想转换以下形式的 Python 字典:

D = {'a':[1,2,3], 'b':[0.1,0.5], 'c':[10,20]}

成以下形式的字典列表:

E = [{a:1,b:0.1,c:10}, {a:1,b:0.1,c:20},{a:1,b:0.5,c:10}, ...., {a:3,b:0.5,c:20}]

我曾尝试使用 itertools,但我不明白如何使用它来组合字典。

标签: pythondictionaryiterationcombinations

解决方案


这是一个解决方案:

import itertools

D = {'a':[1,2,3], 'b':[0.1,0.5], 'c':[10,20]}

E = [dict(zip(D.keys(), a)) for a in itertools.product(*D.values())]

这产生:

E= [{'a': 1, 'b': 0.1, 'c': 10},
 {'a': 1, 'b': 0.1, 'c': 20},
 {'a': 1, 'b': 0.5, 'c': 10},
 {'a': 1, 'b': 0.5, 'c': 20},
 {'a': 2, 'b': 0.1, 'c': 10},
 {'a': 2, 'b': 0.1, 'c': 20},
 {'a': 2, 'b': 0.5, 'c': 10},
 {'a': 2, 'b': 0.5, 'c': 20},
 {'a': 3, 'b': 0.1, 'c': 10},
 {'a': 3, 'b': 0.1, 'c': 20},
 {'a': 3, 'b': 0.5, 'c': 10},
 {'a': 3, 'b': 0.5, 'c': 20}]

编辑:删除了 Aran 指出的有序字典,这里有支持它的文档:Python 字典:keys() 和 values() 是否总是相同的顺序?


推荐阅读