从列表组合生成 Python 字典

Posted

技术标签:

【中文标题】从列表组合生成 Python 字典【英文标题】:Generate Python dictionary from combination of lists 【发布时间】:2020-01-28 19:23:09 【问题描述】:

我已尝试解决我的问题,但无法解决。

我有三个 Python 列表:

atr = ['a','b','c']
m = ['h','i','j']
func = ['x','y','z']

我的问题是根据这三个列表的组合生成一个 Python 字典:

想要的输出:

py_dict = 
    'a': [('x','h'), ('x','i'), ('x','j'), ('y','h'), ('y','i'), ('y','j'),('z','h'), ('z','i'), ('z','j')],
    'b': [('x','h'), ('x','i'), ('x','j'), ('y','h'), ('y','i'), ('y','j'),('z','h'), ('z','i'), ('z','j')],
    'c': [('x','h'), ('x','i'), ('x','j'), ('y','h'), ('y','i'), ('y','j'),('z','h'), ('z','i'), ('z','j')]

【问题讨论】:

【参考方案1】:

你可以使用itertools.product:

import itertools
atr = ['a','b','c']
m = ['h','i','j']
func = ['x','y','z']
prod = list(itertools.product(func, m))
result = i:prod for i in atr

输出:

'a': [('x', 'h'), ('x', 'i'), ('x', 'j'), ('y', 'h'), ('y', 'i'), ('y', 'j'), ('z', 'h'), ('z', 'i'), ('z', 'j')], 'b': [('x', 'h'), ('x', 'i'), ('x', 'j'), ('y', 'h'), ('y', 'i'), ('y', 'j'), ('z', 'h'), ('z', 'i'), ('z', 'j')], 'c': [('x', 'h'), ('x', 'i'), ('x', 'j'), ('y', 'h'), ('y', 'i'), ('y', 'j'), ('z', 'h'), ('z', 'i'), ('z', 'j')]

【讨论】:

谢谢老哥,天哪,我只知道Python有没有这种功能。

以上是关于从列表组合生成 Python 字典的主要内容,如果未能解决你的问题,请参考以下文章

如何从Python中列表的dict中的值生成所有组合

python怎么随机取列表的值

将 Python 字典排列组合到字典列表中

Python中列表和字典有啥区别,分别适用于啥

Python面试必考重点之列表,元组和字典第六关——快速调换字典中的key和value/用循环快速生成一个从0到100的列表

python数据类型—列表元组字典