Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get a list of values from a list of dictionaries?

I have a list of dictionaries, and I need to get a list of the values from a given key from the dictionary (all the dictionaries have those same key).

For example, I have:

l = [ { "key": 1, "Val1": 'val1 from element 1', "Val2": 'val2 from element 1' }, 
      { "key": 2, "Val1": 'val1 from element 2', "Val2": 'val2 from element 2' }, 
      { "key": 3, "Val1": 'val1 from element 3', "Val2": 'val2 from element 3' } ]

I need to get 1, 2, 3.

Of course, I can get it with:

v=[]
for i in l:
    v.append(i['key'])

But I would like to get a nicer way to do so.

like image 319
Jester Avatar asked Jul 30 '14 15:07

Jester


People also ask

How do I iterate a list of dictionaries in Python?

In Python, to iterate the dictionary ( dict ) with a for loop, use keys() , values() , items() methods. You can also get a list of all keys and values in the dictionary with those methods and list() . Use the following dictionary as an example. You can iterate keys by using the dictionary object directly in a for loop.


1 Answers

Using a simple list comprehension (if you're sure every dictionary has the key):

In [10]: [d['key'] for d in l]
Out[10]: [1, 2, 3]

Otherwise you'll need to check for existence first:

In [11]: [d['key'] for d in l if 'key' in d]
Out[11]: [1, 2, 3]
like image 140
vaultah Avatar answered Nov 09 '22 09:11

vaultah