【问题标题】:Turning a list of dictionaries into a list of lists将字典列表转换为列表列表
【发布时间】:2015-10-16 02:33:47
【问题描述】:

我知道这可以通过列表理解实现,但我似乎无法弄清楚。目前我有一个这样的字典列表:

 [ {'field1': 'a', 'field2': 'b'},
   {'field1': 'c', 'field2': 'd'},
   {'field1': 'e', 'field2': 'f'} ]

我试图把它变成:

list = [
    ['b', 'a'],
    ['d', 'c'],
    ['f', 'e'],
]

【问题讨论】:

    标签: python list dictionary list-comprehension dictionary-comprehension


    【解决方案1】:

    你可以试试:

    [[x['field2'], x['field1']] for x in l]
    

    l 是您的输入列表。您的数据的结果将是:

    [['b', 'a'], ['d', 'c'], ['f', 'e']]
    

    这样可以确保field2 的值在field1 的值之前

    【讨论】:

      【解决方案2】:

      只需在 Python 2 中返回 dict.values() 列表,或在 Python 3 中将字典视图转换为列表:

      [d.values() for d in list_of_dicts]  # Python 2
      [list(d.values()) for d in list_of_dicts]  # Python 3
      

      请注意,这些值不会按任何特定顺序排列,因为字典没有排序。如果您希望它们按给定顺序排列,则必须添加排序步骤。

      【讨论】:

        【解决方案3】:

        我不确定你想要什么订单,但是你不能做任何订单:

        list_ = [list(_.values()) for _ in dict_list]
        

        【讨论】:

        • 请注意,list() 调用仅在 Python 3 中需要,在 Python 2 中 dict.values() 已经返回一个列表。
        • 好吧,它不会破坏任何东西,所以谁在乎呢。
        • 如果这是在关键路径上,您可能会关心。
        • 如果它在关键路径上,那么他应该首先弄清楚如何以正确的形式获取数据。我保证单步执行数据以生成列表将比浅拷贝列表花费更长的时间。
        【解决方案4】:

        您可以使用list comprehension

        Python 3

        >>>listdict = [ {'field1': 'a', 'field2': 'b'},
        ...             {'field1': 'c', 'field2': 'd'},
        ...             {'field1': 'e', 'field2': 'f'} ]
        
        >>>[[a for a in dict.values()] for dict in listdict]
        [['b', 'a'], ['d', 'c'], ['f', 'e']]
        

        Python 2

        >>>[dict.values() for dict in listdict]
        [['b', 'a'], ['d', 'c'], ['f', 'e']]
        

        【讨论】:

          猜你喜欢
          • 2015-06-02
          • 1970-01-01
          • 2017-04-23
          • 2021-10-13
          • 2014-01-20
          • 2020-05-23
          • 2019-06-11
          相关资源
          最近更新 更多