[ {"923390702359048212": 5}, {"462291477964259329": 1}, {"803390252265242634": 3}, {"824114065445486592": 2}, {"832041337968263178": 4} ]Esta es una lista de identificaciones de usuario que acabo de hacer al azar y un número de muestra que tiene cada identificación. En este caso, llamémoslo una cantidad de goles marcados en una temporada en un videojuego. Mientras trato de actualizar la cantidad de goles marcados al final del juego, tengo que dar un rodeo que primero obtenga todas las identificaciones de miembros en el servidor y luego las compare con los datos con el siguiente código.
amount = 0 for member in server: if member.id != server.member.id: amount = amount + 1 else: print(amount) print(str(member.id), str(server.member.id)) print(jsondata[amount][str(server.member.id)]) break jsondata[amount][str(server.member.id) = jsondata[amount][str(server.member.id)] + 1¿Hay una mejor manera de hacer lo que estoy haciendo? Sé que eventualmente tendré problemas, ya que no enumero a los miembros en el json hasta que marcan un gol y también siento que estoy perdiendo mucho tiempo con mi programa al hacer que verifique a muchos miembros (yo edité mi lista real e hice esta para que sea más fácil, ya que nadie necesita ver más de 50 entradas para tener una idea). Todavía soy un principiante en lo que respecta a esto, así que responda en términos simples o deje enlaces a lugares donde pueda aprender ideas más complicadas. Gracias
def goalscored(): amount = 0 for member in server: if member.id != server.member.id: amount = amount + 1 else: print(amount) break with open('Goals.json','w') as f: jsondata = json.load(f) jsondata[amount][str(server.member.id) = jsondata[amount][str(server.member.id)] + 1 json.dump(jsondata,f) def firstgoal(server.member.id): with open('Goals.json','w') as f: jsondata = json.load(f) amount = 0 goalscored = 1 totalmembers = server.members.amount for member in server: if membed.id !=server.member.id: amount = amount + 1 if amount == totalmembers: NewScore = {user.id:goalscored} json.dump(NewScore,f)Código que estoy usando
No estoy seguro de por qué no pudo hacerlo funcionar antes, pero almacenarlo como dict sería mucho, mucho más fácil.
# file.json { "923390702359048212": 5, "462291477964259329": 1, "803390252265242634": 3, "824114065445486592": 2, "832041337968263178": 4 } def goalscored(): with open("Goals.json", "r") as f: jsondata = json.load(f) # Make sure your id is not int but str if server.member.id not in jsondata: # first goal case jsondata[server.member.id] = 0 jsondata[server.member.id] += 1 with open("Goals.json", "w") as f: json.dump(jsondata, f)