56 votes

Comment accéder à la valeur d'une clé de dictionnaire présente dans une liste ?

Supposons que je dispose de la liste suivante :

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

Comment accéder à une valeur particulière de la clé ? d ?

53voto

Indexer la liste puis le dict.

print L[1]['d']

21voto

Artsiom Rudzenka Points 9771

Tout d'abord, n'utilisez pas 'list' comme nom de variable.

Si vous avez des dictionnaires simples avec des clés uniques, vous pouvez procéder comme suit (notez qu'un nouvel objet dictionnaire contenant tous les éléments des sous-dictionnaires sera créé) :

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

Autrement :

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

Ou très basique :

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

17voto

Rob Cowie Points 10471

Vous n'avez pas fourni suffisamment de contexte pour fournir une réponse précise (c'est-à-dire comment voulez-vous gérer des clés identiques dans des dicts multiples ?)

Une réponse est d'itérer la liste, et d'essayer d'obtenir '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]

Une autre solution consiste à accéder directement au dict (par l'index de la liste), mais il faut savoir que la clé est présente.

mylist[1]['d']

5voto

inspectorG4dget Points 25092

Si vous savez quel dict dans la liste a la clé que vous recherchez, alors vous avez déjà la solution (telle que présentée par Matt et Ignacio). Toutefois, si vous ne savez pas quel dictateur possède cette clé, vous pouvez procéder comme suit :

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

4voto

Paras Points 31

Pour obtenir toutes les valeurs d'une liste de dictionnaires, utilisez le code suivant :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X