Skip to main content
 首页 » 编程设计

Python创建字典组合

2025年05月04日11myhome

我想转换以下形式的 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,但我不明白如何使用它来组合字典。

请您参考如下方法:

解决方法:

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 dictionary: are keys() and values() always the same order?