【问题标题】:Convert list of lists to list of dictionaries based on order of items in sublist根据子列表中项目的顺序将列表列表转换为字典列表
【发布时间】:2018-09-11 10:27:37
【问题描述】:

我想将我的列表列表转换为字典列表。第一个列表的值应该是我的键,其余的都应该被视为值。

例如:

[['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]

应该转换成

[{'a':[1,4,7]}, {'b': [2,5,8]},{'b': [3,6,9]}]

我找到了this,但对我没有帮助..

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: python python-3.x list dictionary


    【解决方案1】:

    使用zip 将您的数组转置为[('a', 1, 4, 7), ...];弹出第一个元素作为键,列出其余的作为值。

    arr = [['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]
    [{ e[0]: list(e[1:])} for e in zip(*arr)]
    # => [{'a': [1, 4, 7]}, {'b': [2, 5, 8]}, {'c': [3, 6, 9]}]
    

    【讨论】:

    • 啊,是的,我没注意到,这是一个不寻常的结构。好的...编辑:已修复。
    • dicts 列表并不少见。
    • @ᴀʀᴍᴀɴ 字典列表,没有。不过,单个键值字典列表不如一个字典常见。我困了:P
    【解决方案2】:

    使用带有序列解包的列表推导:

    L = [['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]
    
    res = [{names: nums} for names, *nums in zip(*L)]
    
    print(res)
    
    [{'a': [1, 4, 7]}, {'b': [2, 5, 8]}, {'c': [3, 6, 9]}]
    

    【讨论】:

      【解决方案3】:
      a=[['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]  
      dictionary_values=[dict([(a[0][i],list(zip(*a[1:])[i])) for i in range (len(a)-1)])]
      

      输出:

      [{'a': [1, 4, 7], 'b': [2, 5, 8], 'c': [3, 6, 9]}]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-25
        • 2015-06-02
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        相关资源
        最近更新 更多