【问题标题】:Make pairs of labels and nested lists制作成对的标签和嵌套列表
【发布时间】:2021-08-10 13:54:59
【问题描述】:

给定列表如下:

total = [['ford', 'x', 'z', 'A', 'sedan', ['steering wheel problems', 'gearbox problems', 'broken engine']], ['fiat', 'y', 'x', 'C', 'kombi', ['steering wheel problems']], ...]

以及字段列表:

labels = ['make', 'model', 'version', 'type', 'infos']

我需要创建如下对象:

x = [[['make': ford, 'model': 'x', 'version': 'x', 'type': 'z', 'infos': ['steering wheel problems']], ['make': fiat, 'model': 'x', 'version': 'x', 'type': 'z', 'infos': ['steering wheel problems', 'gearbox problems']], ...]

如何创建这样的东西?

【问题讨论】:

    标签: python list nested


    【解决方案1】:

    dict() 可以将 2 元组列表作为参数,我们可以使用 zip() 轻松构造其中一个。

    如果我们可以添加一个额外的标签来说明'sedan' 条目,代码会变得更加简洁:

    labels = ['make', 'model', 'version', 'type', 'body', 'infos']
    x = [
        dict(zip(labels, entry))
        for entry in total
    ]
    # [
    #  {'make': 'ford', 'model': 'x', 'version': 'z', 'type': 'A', 'body': 'sedan', 'infos': ['steering wheel problems', 'gearbox problems', 'broken engine']}, 
    #  {'make': 'fiat', 'model': 'y', 'version': 'x', 'type': 'C', 'body': 'kombi', 'infos': ['steering wheel problems']}
    # ]
    

    否则,我们必须从列表中手动“编辑掉”该项目。最简洁的方式大概是这样的:

    labels = ['make', 'model', 'version', 'type', 'infos']
    x = [
        dict(zip(labels, entry[:4] + entry[5:]))
        for entry in total
    ]
    # [
    #  {'make': 'ford', 'model': 'x', 'version': 'z', 'type': 'A', 'infos': ['steering wheel problems', 'gearbox problems', 'broken engine']}, 
    #  {'make': 'fiat', 'model': 'y', 'version': 'x', 'type': 'C', 'infos': ['steering wheel problems']}
    # ]
    

    【讨论】:

      【解决方案2】:

      你可以试试这个

      total = [['ford', 'x', 'z', 'A', ['steering wheel problems', 'gearbox problems', 'broken engine']], ['fiat', 'y', 'x', 'C', ['steering wheel problems']]]
      labels = ['make', 'model', 'version', 'type', 'infos']
      
      new= [dict(zip(labels,x)) for x in total ]
      print(new)
      

      输出:

      [{'make': 'ford', 'model': 'x', 'version': 'z', 'type': 'A', 'infos': ['steering wheel problems', 'gearbox problems', 'broken engine']}, {'make': 'fiat', 'model': 'y', 'version': 'x', 'type': 'C', 'infos': ['steering wheel problems']}]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2017-12-06
        相关资源
        最近更新 更多