Skip to main content
 首页 » 编程设计

python之从一个充满数组的 Python 字典到一个代表所有组合的字典

2025年05月04日15langtianya

我想要一个输入是这样的函数:

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]}