代码之家  ›  专栏  ›  技术社区  ›  user46543

从列表组合生成python字典

  •  3
  • user46543  · 技术社区  · 5 年前

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

    我有三个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 回复  |  直到 5 年前
        1
  •  7
  •   Ajax1234    5 年前

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