Py学习  »  Python

从列表组合生成python字典

user46543 • 4 年前 • 839 次点击  

我试图解决我的问题,但我做不到。

我有三个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')]
}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46068
 
839 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Ajax1234
Reply   •   1 楼
Ajax1234    4 年前

你可以使用 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')]}