如何将字符串字典转换为列表到字典列表?

Zam*_*nji 3 python combinations python-itertools

如何将字符串字典转换为列表到将字符串映射到这些列表中的值的字典列表?例如,以下字典

{'a': [1,2],
 'b': ['x', 'y', 'z']}
Run Code Online (Sandbox Code Playgroud)

将被转换为以下列表

[{'a': 1, 'b': 'x'}, {'a': 1, 'b': 'y'}, {'a': 1, 'b': 'z'},
 {'a': 2, 'b': 'x'}, {'a': 2, 'b': 'y'}, {'a': 2, 'b': 'z'},]
Run Code Online (Sandbox Code Playgroud)

Gar*_*tty 8

这里你想要的主要是值的乘积,然后重新创建字典.实际上,我们可以通过以下方式轻松完成此操作itertools.product():

>>> from itertools import product
>>> test = {'a': [1, 2], 'b': ['x', 'y', 'z']}
>>> [dict(zip(test.keys(), part)) for part in product(*test.values())]
[{'a': 1, 'b': 'x'}, {'a': 1, 'b': 'y'}, {'a': 1, 'b': 'z'}, 
 {'a': 2, 'b': 'x'}, {'a': 2, 'b': 'y'}, {'a': 2, 'b': 'z'}]
Run Code Online (Sandbox Code Playgroud)

我们所做的是将产品列入字典中的所有列表,然后获取每个生成的对(或者在字典中的更多项目的情况下,任意长的元组)并将其压缩到字典中的键.然后我们将它传递给dict()内置函数来制作字典.这一切都在列表理解中,以便快速制作列表.