python - 从填充数组的 Python dict 到表示所有组合的 dict
问题描述
我想要一个输入是这样的函数:
my_dict = {
'foo':[1,2,3]
'bar': [True, False]
}
输出是:
results = {
'foo':[1, 1, 2, 2, 3, 3]
'bar': [True, False, True, False, True, False]
}
背景:我正在为机器学习编写自己的“交叉验证”函数。所以我需要展平所有参数来提供我的模型。我事先不知道有多少参数也没有它们的名字。所以我需要解析输入字典。
我觉得我让它变得比需要的更复杂,所以这就是我寻求帮助的原因。也许一个函数已经存在,即使我没有找到它。
谢谢你的帮助!
解决方案
一个简单的方法如下
import itertools
keys = list(my_dict.keys())
product = list(itertools.product(*list(my_dict.values())))
results = {keys[i]: [item[i] for item in product] for i in range(len(keys))}
这给出了你所追求的结果。
print(results)
{'foo': [1, 1, 2, 2, 3, 3], 'bar': [True, False, True, False, True, False]}
推荐阅读
- vue.js - vue cli build 为什么会两次注入app.js、app.css、vendors.js和vendors.css?
- python - 根据规则 Pandas 数据框创建新列
- javascript - 正则表达式匹配 &foo= 之间的所有内容,直到它再次出现
- c# - Mono 编译器生成的 .exe 直接从 linux 命令行运行,为什么?
- angular - Angular`ngOnInit`中的异步/等待
- php - 如何修复“包含”不显示文件内容?
- python - “NoneType”对象没有属性“attrs”
- python - 如何在屏幕中使用 RecycleView
- python - 如何修复 dev_appserver.py 返回的错误
- python - 如何修复“errLevel 17 IBM SPSS Statistics 后端未准备好”问题?