J'ai un fichier JSON que j'ai converti en dictionnaire en utilisant le code ci-dessous:
Newdict= {'name':'jas','surname':'kumar','age':19,'country':'IN'}
{'name':'arch','surname':'sahu','age':29,'country':'Sl'}
{'name':'salman','surname':'khan','age':20,'country':'pk'}
{'name':'raju','surname':'reddy','age':32,'country':'usa'}
r a les mêmes données que newdict .
Newdict=r.json()
3 Réponses :
Vous pouvez faire
salman
OU
print([i['name'] for i in Newdict if int(i['age']) == 20][0])
OU en une seule ligne
for i in Newdict:
if i['age'] == '20':
print(i['name'])
Sortie
Newdict= [{'name':'jas','surname':'kumar','age':'19','country':'IN'},
{'name':'arch','surname':'sahu','age':'29','country':'Sl'},
{'name':'salman','surname':'khan','age':'20','country':'pk'},
{'name':'raju','surname':'reddy','age':'32','country':'usa'}]
for i in Newdict:
if int(i['age']) == 20:
print(i['name'])
Lors de la création de Dictionary à partir de json, dois-je déclarer Dictionary, par exemple d = [] d = r.json ()
Si le json est une liste de dictionnaires, vous ne pouvez faire que r.json ()
Il y a plusieurs dictionnaires dans l'exemple, donc vous avez probablement une sorte de liste? Ensuite, vous pouvez faire quelque chose comme:
[d['name'] for d in dictList if d['age'] == 20]
Upd. Comme Ann Zen l'a souligné dans les commentaires, ce code vous renverrait une liste avec une seule valeur (ou plusieurs valeurs, si plusieurs dictionnaires ont age = 20 ). Si vous êtes sûr qu'il n'y a qu'une seule valeur, qui correspond à votre filtre, vous pouvez ajouter [0] à la fin, pour obtenir le premier résultat de cette liste.
Cela renverra le nom dans une liste. Ajoutez un abonnement de [0] pour récupérer uniquement le nom dans une chaîne.
Vous pouvez utiliser les clés de dictionnaire pour récupérer les valeurs correspondantes:
salman
Sortie:
Newdict = [{'name':'jas','surname':'kumar','age':'19','country':'IN'},
{'name':'arch','surname':'sahu','age':'29','country':'Sl'},
{'name':'salman','surname':'khan','age':'20','country':'pk'},
{'name':'raju','surname':'reddy','age':'32','country':'usa'}]
for d in Newdict:
if int(d['age']) == 20:
print(d['name'])
Qu'est-ce que tu as essayé jusque-là? Pouvez-vous publier un exemple de code de vos tentatives?
J'ai essayé le code ci-dessous de leo et cela a fonctionné pour moi
Consultez la réponse la plus positive ici stackoverflow.com/a/8023337/503835 . Appliquez la boucle à votre code.