python - 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,但我不明白如何使用它来组合字典。
解决方案
这是一个解决方案:
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() 是否总是相同的顺序?
推荐阅读
- r - 2个向量的反卷积(1个知道+ 1个未知)
- sql - Hive,多次计算行并在同一个查询中进行透视
- python-3.x - Python3:写入文件,我不知道使用哪种编码?
- adaboost - 理解 Adaboost 理论的一部分的问题
- python - Python - 从网站获取 3 个随机文本
- java - Jetty 没有将我的 WAR 文件提取到临时目录中。如何阻止它提取或确保它提取到临时目录?
- javascript - React Router / Redux - 连接的组件未将 Redux 状态传递给道具
- python - 在 python 中使用 pass 语句作为使代码更具可读性的一种方式?有关系吗?
- php - 登录WordPress后重定向到访问过的页面
- c# - 如何区分 C# 中 typeof(int) == typeof(int?)