将字典列表转换为列表列表

Turning a list of dictionaries into a list of lists

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

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

我想把它变成:

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

只return 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

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

我不确定你想要什么顺序,但是如果没有顺序你可以这样做:

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

你可以试试:

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

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

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

这样可以确保 field2 的值出现在 field1

的值之前

您可以使用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']]