Python字典列表作为值组合元素

Python字典列表作为值组合元素,python,dictionary,combinations,Python,Dictionary,Combinations,我有一本以列表为值的字典。我想将每个元素与另一个元素组合,但只针对不同的键。该组合应存储在另一个词典中。这本字典应该有像,“sim_1”,“sim_2”这样的键,等等。这些值将是一个列表。此列表包含几个元组。元组的第一个元素是旧键,第二个元素是组合元素。 让我们假设以下示例: dict_old={'a':['r1'], 'b':['r1','r2','r3'], 'c':['r1','r2','r3'], 'd':['r1'], 'e':['r1','r2']} dict_new={'sim_1

我有一本以列表为值的字典。我想将每个元素与另一个元素组合,但只针对不同的键。该组合应存储在另一个词典中。这本字典应该有像,
“sim_1”
“sim_2”
这样的键,等等。这些值将是一个列表。此列表包含几个元组。元组的第一个元素是旧键,第二个元素是组合元素。 让我们假设以下示例:

dict_old={'a':['r1'],
'b':['r1','r2','r3'],
'c':['r1','r2','r3'],
'd':['r1'],
'e':['r1','r2']}
dict_new={'sim_1':[('a','r1'),('b','r1'),('c','r1'),('d','r1'),('e','r1')]
“模拟2”:[('a','r1'),('b','r2'),('c','r1'),('d','r1'),('e','r1')],
“模拟3”:……}
对于
'sim_2'
,只有
'b'
更改。总共有18个模拟人生

我感谢你的帮助

致以最良好的祝愿,
Max

使用
itertools
软件包的
product
功能,您可以获得组合列表。再加上一些字典逻辑,你就有了新的口述:

import itertools

dict_old = {'a': ['r1'], 
            'b': ['r1', 'r2', 'r3'], 
            'c': ['r1', 'r2', 'r3'], 
            'd': ['r1'], 
            'e': ['r1', 'r2']}

dict_values = dict_old.values()
dict_keys = dict_old.keys()
combinations = itertools.product(*dict_values)

dict_new = {}
for sim_count, combination in enumerate(combinations):
  sim_key = 'sim_'+str(sim_count+1)
  dict_new[sim_key] = []
  for i, key in enumerate(dict_keys):
    tuple = (key,combination[i])
    dict_new[sim_key].append(tuple)