2

Я знаю, что это возможно со списком, но я не могу понять это. В настоящее время у меня есть список словарей, например, так:Включение списка словарей в список списков

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

Я пытаюсь превратить это в:

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

ответ

4

Вы можете попробовать:

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

где l находится список ввода. Результат ваших данных будет:

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

Таким образом, вы убедитесь, что значение field2 предшествует значению для field1

3

Просто вернуть dict.values() списки в Python 2, или преобразовать словарь представление в виде списка в Python 3:

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

Обратите внимание, что значения не будут в каком-либо определенном порядке, потому что словари не упорядочены. Если вы ожидали, что они будут в определенном порядке, вам придется добавить шаг сортировки.

0

Я не уверен, что заказ вы хотите, но не для того, вы можете сделать:

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

Обратите внимание, что вызов 'list()' нужен только для Python 3, в Python 2 'dict.values ​​()' возвращает список уже. –

+0

Ну, это не сломает ничего такого, кого это волнует. – CrazyCasta

+0

Если это находится на критическом пути, вам может быть интересно. –

0

Вы можете использовать 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']] 
Смежные вопросы