2024-04-28 18:08:51 发布
网友
我有一些像这样的东西:
{'Y': [1, 2, 6, 7], 'X': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], 'Z': [0, 3, 6, 9]}
可能有3个以上的变量。 我不想得到所有这些变量的组合。 得到类似于:
我想不出算法。 请帮帮我。在
使用list(itertools.product(*your_dict.values()))可以简单地得到它:)
list(itertools.product(*your_dict.values()))
编辑:为了您的预期结果,我写了以下内容:
[{key: value[n] for n, key in enumerate(your_dict.keys())} for value in itertools.product(*your_dict.values())]
不是很好看,但它只是工作(仅在Python2.7+中)。在
基于Felix Yan的一个更好的解决方案:
[dict(zip(your_dict.keys(), item)) for item in itertools.product(*your_dict.values())]
其他的海报是对的:itertools.product在这里非常有用。但是,由于词典的格式不同,因此需要注意确保获得原始词典键。在
itertools.product
import itertools data = {'Y': [1, 2, 6, 7], 'X': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], 'Z': [0, 3, 6, 9]} # Join the key and value together in tuples # [[('Y', 1), ('Y', 2), ('Y', 6), ('Y', 7)], ...] tuples = [[(var, val) for val in data[var]] for var in data] # Create the dictionary setting values to X, Y, and Z # [{'Y': 1, 'X': 0, 'Z': 0}, {'Y': 1, 'X': 0, 'Z': 3} ....] answer = [dict(a) for a in itertools.product(*tuples)]
使用
list(itertools.product(*your_dict.values()))
可以简单地得到它:)编辑:为了您的预期结果,我写了以下内容:
不是很好看,但它只是工作(仅在Python2.7+中)。在
基于Felix Yan的一个更好的解决方案:
其他的海报是对的:
itertools.product
在这里非常有用。但是,由于词典的格式不同,因此需要注意确保获得原始词典键。在相关问题 更多 >
编程相关推荐