Vinodh
Vinodh

Reputation: 1129

How to access a dictionary key value present inside a list?

Suppose I have the following list:

list = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}]

How do I access a particular value of key say d?

Upvotes: 59

Views: 259862

Answers (5)

Paras
Paras

Reputation: 41

To get all the values from a list of dictionaries, use the following code :

list = [{'text': 1, 'b': 2}, {'text': 3, 'd': 4}, {'text': 5, 'f': 6}]
subtitle=[]
for value in list:
   subtitle.append(value['text'])

Upvotes: 4

inspectorG4dget
inspectorG4dget

Reputation: 113905

If you know which dict in the list has the key you're looking for, then you already have the solution (as presented by Matt and Ignacio). However, if you don't know which dict has this key, then you could do this:

def getValueOf(k, L):
    for d in L:
        if k in d:
            return d[k]

Upvotes: 5

Artsiom Rudzenka
Artsiom Rudzenka

Reputation: 29093

First of all don't use 'list' as variable name.

If you have simple dictionaries with unique keys then you can do the following(note that new dictionary object with all items from sub-dictionaries will be created):

res  = {}
for line in listOfDicts:
   res.update(line)
res['d']
>>> 4

Otherwise:

getValues = lambda key,inputData: [subVal[key] for subVal in inputData if key in subVal]
getValues('d', listOfDicts)
>>> [4]

Or very base:

def get_value(listOfDicts, key):
    for subVal in listOfDicts:
        if key in subVal:
            return subVal[key]

Upvotes: 21

Rob Cowie
Rob Cowie

Reputation: 22619

You haven't provided enough context to provide an accurate answer (i.e. how do you want to handle identical keys in multiple dicts?)

One answer is to iterate the list, and attempt to get 'd'

mylist = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}]
myvalues = [i['d'] for i in mylist if 'd' in i]

Another answer is to access the dict directly (by list index), though you have to know that the key is present

mylist[1]['d']

Upvotes: 17

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 798456

Index the list then the dict.

print L[1]['d']

Upvotes: 57

Related Questions