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

标签 python combinations python-itertools

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

{'a': [1,2],
 'b': ['x', 'y', 'z']}

会变成下面的列表

[{'a': 1, 'b': 'x'}, {'a': 1, 'b': 'y'}, {'a': 1, 'b': 'z'},
 {'a': 2, 'b': 'x'}, {'a': 2, 'b': 'y'}, {'a': 2, 'b': 'z'},]

最佳答案

这里你想要的主要是值的乘积,然后重新创建字典。我们实际上可以在 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'}]

我们所做的是生成字典中所有列表的乘积,然后取出每个生成的对(或者在字典中有更多项的情况下,任意长的元组)并将其压缩到字典中的键.然后我们将其传递给内置的 dict() 来创建字典。这一切都在列表理解中,可以快速制作列表。

关于python - 如何将字符串字典转换为列表到字典列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11423101/

相关文章:

algorithm - 无标记的排列组合。就像将几个元素尽可能均匀地分配到几个组中

PHP算法从单个集合中生成特定大小的所有组合

Python pandas如何按行扫描包含的字符串?

python - 'if not'

javascript - 如何在 JavaScript 中创建此对象的键/值的所有组合?

Python 3,模块 'itertools' 没有属性 'ifilter'

Python:使用itertools从文本文件中获取列表中的上一个、当前和下一个项目

Python 程序将无法正确运行

python - MacroPy 安装失败

python - 防火墙后面的设备通过 ssh 连接