2013-07-01 8 views
1

J'ai un dictionnaire appelé 'myjson' qui contient une liste de dictionnaires, indexés par les noms de colonnes d'une feuille de calcul délimitée par des tabulations. Chaque ligne de la feuille de calcul est un dictionnaire, avec les clés correspondant aux colonnes de la feuille de calcul et les valeurs correspondant aux entrées de la ligne particulière.Comment accéder à une valeur dans une liste de dictionnaires?

ex simplifié:

{'name':'Sam', 'DoB': 5/23/2000'} 
{'name':'Jon', 'DoB': 5/10/2000'} 

J'ai besoin pour accéder au nom de « colonne » ou « ensemble de valeurs » (ne sais pas comment faire référence à eux)?

Comment faire? avait beaucoup de mal, en essayant

myjson[0].itervalues() me donne toutes les valeurs

mais myjson[0][name] ne fonctionne pas ...


AJOUT À CE:

Je suis en train pour analyser une chaîne contenant un nom et un degré. J'ai une longue liste de ceux-ci. Certains ne contiennent aucun degré, certains en contiennent un et certains en contiennent plusieurs.

cordes Ex:

Sam da Man J.D. 
Green Eggs Jr. Ed.M. 
Argle Bargle Sr. MA 
Cersei Lannister M.A. Ph.D. 

Pour autant que je peux dire, les degrés sont disponibles dans les modèles suivants:

x.x. 
x.x.x. 
x.x.xx. 
x.xx. 
xx.x. 
x.xxx. 
two caps (ex: 'MA') 

Comment puis-je parse cela? Je lis lis regex et je pense que .match() pourrait être le chemin à parcourir, mais je ne comprends pas comment avoir une liste de modèles à faire correspondre.

Merci!

+0

vous devriez poser une nouvelle question –

+0

si (http://stackoverflow.com/questions/17412017/how-to-access- [ce] une question de valeur-dans-une-liste-de-dictionaries) est faite, vous pouvez accepter un par clic droit. Si vous voulez –

Répondre

3

Vous avez fourni le dictionnaire avec une clé de la chaîne 'name', c'est donc ce que vous devez utiliser pour y accéder. myjson[0]['name'] devrait vous donner ce que vous voulez.

3

Utilisez 'name' et non name, car sans les guillemets python pense que vous faites référence à une variable name.

Utilisez une compréhension de la liste pour obtenir toutes ces valeurs:

>>> lis = [{'name':'Sam', 'DoB': '5/23/2000'},{'name':'Jon', 'DoB': '5/10/2000'}] 
>>> [x['name'] for x in lis] 
['Sam', 'Jon'] 
+0

OP une confusion est pourquoi 'myjson [0] .itervalues ​​()' et 'myjson [0] [nom]' sont mêmes, lire la dernière ligne. (point encore pas de réponse) –

+0

@GrijeshChauhan Non, ils ne sont pas les mêmes, après avoir lu OP [commentaire] (http://stackoverflow.com/questions/17412017/how-to-access-a-value-in-a-list -d-dictionaries/17412059? noredirect = 1 # comment25285529_17412047) Je pense que les guillemets étaient le problème. –

+0

hmm Remarqué :) vous avez raison –

Questions connexes