Comment puis-je extraire toutes les valeurs d'une clé spécifique à partir d'une liste de dictionnaires?
J'ai une liste de dictionnaires qui ont tous la même structure dans la liste. Par exemple:
test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, {'id':3, 'value':'three'}]
Je veux obtenir chacun de la value
éléments de chaque dictionnaire dans la liste:
['one', 'two', 'three']
Je peux bien sûr parcourir la liste et l'extrait de chaque valeur à l'aide d'une boucle for:
results = []
for item in test_data:
results.append(item['value'])
cependant mon jeu de données est assez grand. Je me demande si il ya un moyen plus rapide pour cela.
- Je ne peux pas imaginer que ce serait beaucoup plus rapide que cela. Vous êtes à la recherche à chaque dictionnaire un temps, et un dictionnaire immédiate de recherche. Si vous voulez augmenter la vitesse à un degré élevé, vous aurez besoin de changer pour une structure différente, probablement.
- Une compréhension de liste devrait être légèrement plus rapide.
InformationsquelleAutor James Mertz | 2014-08-05
Vous devez vous connecter pour publier un commentaire.
Si vous avez juste besoin de faire une itération sur les valeurs une fois, utiliser le générateur d'expression:
Un autre (ésotérique) option pourrait être d'utiliser
map
avecitemgetter
- il pourrait être légèrement plus vite que le générateur d'expression, ou pas, selon les circonstances:Et si vous avez absolument besoin d'une liste, une liste de compréhension est plus rapide que itéré
list.append
, donc:Vous pouvez faire ceci:
Si vos données est vraiment grand, un générateur sera plus efficace:
ex:
Le générateur partie est: est-ce
Par emballage que dans un
list()
, vous échappement de la génératrice et le retour de ses valeurs bien dans un tableau.