将字典列表转换为列表列表
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']]
我知道这可以通过列表理解来实现,但我似乎无法弄明白。目前我有一个这样的字典列表:
[ {'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']]