/ / python aggiungi dizionario al dizionario esistente - AttributeError: l'oggetto 'dict' non ha attributo 'append' - python, dictionary

python aggiungi dizionario al dizionario esistente - AttributeError: l'oggetto 'dict' non ha attributo 'append' - python, dictionary

Sto cercando di aggiungere un file JSON esistente. Quando sovrascrivo l'intero file JSON, tutto funziona perfettamente. Il problema che non sono stato in grado di risolvere è in append. Sono completamente in perdita a questo punto.

{
"hashlist": {
"QmVZATT8jWo6ncQM3kwBrGXBjuKfifvrE": {
"description": "Test Video",
"url": ""
},
"QmVqpEomPZU8cpNezxZHG2oc3xQi61P2n": {
"description": "Cat Photo",
"url": ""
},
"QmYdWb4CdFqWGYnPA7V12bX7hf2zxv64AG": {
"description": "test.co",
"url": ""
}
}
}%

Ecco il codice che sto usando dove Dati [ "hashlist"]. accodare (ingresso) ricevi AttributeError: l'oggetto "dict" non ha attributo "append"

#!/usr/bin/python

import json
import os


data = []
if os.stat("hash.json").st_size != 0 :
file = open("hash.json", "r")
data = json.load(file)
# print(data)

choice = raw_input("What do you want to do? n a)Add a new IPFS hashn s)Seach stored hashesn  >>")


if choice == "a":
# Add a new hash.
description = raw_input("Enter hash description: ")
new_hash_val = raw_input("Enter IPFS hash: ")
new_url_val = raw_input("Enter URL: ")
entry = {new_hash_val: {"description": description, "url": new_url_val}}

# search existing hash listings here
if new_hash_val not in data["hashlist"]:
# append JSON file with new entry
# print entry
# data["hashlist"] = dict(entry) #overwrites whole JSON file
data["hashlist"].append(entry)

file = open("hash.json", "w")
json.dump(data, file, sort_keys = True, indent = 4, ensure_ascii = False)
file.close()
print("IPFS Hash Added.")
pass
else:
print("Hash exist!")

risposte:

3 per risposta № 1

Solitamente gli errori di python sono cariniautoesplicativo, e questo è un esempio perfetto. I dizionari in Python non hanno un metodo di aggiunta. Ci sono due modi per aggiungere ai dizionari, nominando una nuova chiave, coppia di valori o passando un iterabile con una chiave, coppie di valori a dictionary.update (). Nel tuo codice puoi fare:

data["hashlist"][new_hash_val] = {"description": description, "url": new_url_val}

o:

data["hashlist"].update({new_hash_val: {"description": description, "url": new_url_val}})

Il primo è probabilmente superiore per quello che stai cercando di fare, perché il secondo è più per quando stai cercando di aggiungere molte coppie chiave, valore.

Puoi leggere di più sui dizionari in Python Qui.