-1
votes

Comment changer la valeur d'une clé imbriquée dans un fichier JSON?

Je veux changer la valeur d'une clé imbriquée, mais je reçois cette erreur xxx

voici mon code: xxx

ceci est ce que mon fichier JSON ressemble à: xxx

Comment puis-je modifier la valeur à l'intérieur de mon fichier JSON?


0 commentaires

3 Réponses :


0
votes

Vous devriez être capable de mettre à jour l'élément de dictionnaire directement.

Remplacez le texte suivant xxx

avec xxx

Donc, le code serait xxx


6 commentaires

J'ai besoin de conserver le si clé == Nom: Protion du code car le programme ne saura pas ce que clé est et lorsque je fais mon code: clé [nom ] ['Score'] + = 1 i Get TypeError: Les indices de chaîne doivent être des entiers


Vous venez de confirmer que vous avez remplacé les 5 lignes avec mon correctif suggéré?


Quand je fais que je reçois `NameError: Nom 'Key' n'est pas défini"


Toutes mes excuses, typo à ma fin. J'ai mis à jour la réponse pour utiliser les données non clés


La valeur de score dans mon fichier JSON ne change toujours pas.


Vous devez écrire le dictionnaire mis à jour dans le fichier. Vous pouvez confirmer que le dictionnaire est mis à jour avec Imprimer Data [Nom] [«Score»] Stackoverflow.com/Questtions/12309269/...



0
votes

Dans votre boucle pour la boucle, vous êtes itération de la matrice de clés qui est ['one', «deux», «trois»] code> dans votre cas.

Essayez ci-dessous. J'espère que cela aidera! P>

with open('streak.json', 'r+') as f:
    data = json.load(f)
    data[name]['score']+=1 
    f.seek(0)
    json.dump(data, f, indent=4)
    f.truncate()  


7 commentaires

La valeur de score dans mon fichier JSON ne change pas.


@ YEMI.Jump C'est parce que vous lisez / l'analyse du fichier JSON et que vous stockez des données dans une variable et après cette opération d'exécution sur cette variable non dans le fichier.


Désolé si je n'étais pas clair avec ma question. J'ai édité mon message pour inclure que je veux que le fichier change.


Votre question et votre code d'origine fournis n'a pas mentionné l'écriture dans un fichier.


@bkyada Bien que cette méthode fonctionne, chaque valeur avec le score de nom est modifiée. Existe-t-il un moyen de disposer que d'un score changer?


@ Yemi.Jump Pouvez-vous être plus clair sur le cas d'utilisation? Si vous pouvez fournir un exemple. Ici, votre boucle extérieure reçoit tous les noms et basée sur la comparaison, il met à jour le score. Pour changer un «code> score Modifier avez-vous une autre exigence de vérifier?


Le nom de la clé est identique au nom du bouton, c'est pourquoi j'ai fait nom = enfant.text mais il met à jour tous les boutons.



0
votes

Cela devrait fonctionner

with open("a.json", "r+") as read_file:
    data = json.load(read_file)
    data[name]['score'] += 1 # update score

with open("a.json", "w") as json_file: #write it back to the file
    json.dump(data, json_file)


2 commentaires

La valeur du score dans mon fichier JSON ne change pas.


Pour cela, vous devrez écrire les "données" dans le fichier. Utiliser json.dump ()