Je veux changer la valeur d'une clé imbriquée, mais je reçois cette erreur voici mon code: p> ceci est ce que mon fichier JSON ressemble à: p> Comment puis-je modifier la valeur code> code> à l'intérieur de mon fichier JSON? p> p> p >
3 Réponses :
Vous devriez être capable de mettre à jour l'élément de dictionnaire directement.
Remplacez le texte suivant p> avec p> Donc, le code serait p>
J'ai besoin de conserver le si clé == Nom: code> Protion du code car le programme ne saura pas ce que
clé code> est et lorsque je fais mon code:
clé [nom ] ['Score'] + = 1 code> i Get
TypeError: Les indices de chaîne doivent être des entiers code>
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 code> 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/...
Dans votre boucle pour la boucle, vous êtes itération de la matrice de clés qui est Essayez ci-dessous. J'espère que cela aidera! P> ['one', «deux», «trois»] code> dans votre cas.
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()
La valeur de score code> 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 code> code> 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 code> 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 code> mais il met à jour tous les boutons.
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)
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 ()