davegri
davegri

Reputation: 2286

Turning a list of dictionaries into a list of lists

I know this is possible with list comprehension but I can't seem to figure it out. Currently I have a list of dictionaries like so:

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

I'm trying to turn this into:

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

Upvotes: 3

Views: 2302

Answers (4)

user3636636
user3636636

Reputation: 2499

You can use 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']]

Upvotes: 0

JuniorCompressor
JuniorCompressor

Reputation: 20015

You can try:

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

where l is your input list. The result for your data would be:

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

This way you ensure that the value for field2 comes before the value for field1

Upvotes: 5

CrazyCasta
CrazyCasta

Reputation: 28302

I'm not sure what ordering you want, but for no order you could do:

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

Upvotes: 0

Martijn Pieters
Martijn Pieters

Reputation: 1122062

Just return the dict.values() lists in Python 2, or convert the dictionary view to a list in Python 3:

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

Note that the values are not going to be in any specific order, because dictionaries are not ordered. If you expected them to be in a given order you'd have to add a sorting step.

Upvotes: 4

Related Questions