0
votes

Valeurs du dictionnaire Recherche

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 commentaires

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.


3 Réponses :


0
votes

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'])


2 commentaires

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 ()



1
votes

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.


1 commentaires

Cela renverra le nom dans une liste. Ajoutez un abonnement de [0] pour récupérer uniquement le nom dans une chaîne.



0
votes

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'])


0 commentaires