Paulo Leao Posted November 21, 2022 Share Posted November 21, 2022 Gostaria de saber como resolver isto e o porquê disto acontecer. Quando vou incluindo novos elementos na lista, ele sobrescreve o que estava escrito antes ao invés de adicionar no final da lista. declarei: list = [] dicionario: dict = {"a": 0, "b": 0, "c": 0} declarei.append(dicionario) print(declarei) for i in dicionario: # Zerando o dicionario dicionario[i] = 0 dicionario: dict = {"a": 1, "b": 0, "c": 1} declarei.append(dicionario) print(declarei) for i in dicionario: dicionario[i] = 0 dicionario: dict = {"a": 0, "b": 1, "c": 1} declarei.append(dicionario) print(declarei) for i in dicionario: dicionario[i] = 0 dicionario: dict = {"a": 0, "b": 1, "c": 0} declarei.append(dicionario) print(declarei) for i in dicionario: dicionario[i] = 0 dicionario: dict = {"a": 1, "b": 1, "c": 1} declarei.append(dicionario) print(declarei) """ RECEBENDO COMO IMPRSSÂO: [{'a': 0, 'b': 0, 'c': 0}] [{'a': 0, 'b': 0, 'c': 0}, {'a': 1, 'b': 0, 'c': 1}] [{'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 1, 'c': 1}] [{'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 1, 'c': 0}] [{'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 0, 'c': 0}, {'a': 0, 'b': 0, 'c': 0}, {'a': 1, 'b': 1, 'c': 1}] """ bora.py Link to comment Share on other sites More sharing options...
Pessoal da TecnoSpeed Thanael Posted November 23, 2022 Pessoal da TecnoSpeed Share Posted November 23, 2022 Olá @Paulo Leao tudo bem? Se não estou enganado isso ocorre por você estar modificando a mesma variável dicionario em todos os momentos. Vamos analisar por exemplo a sua lista declarei dentro dela não esta sendo armazenado os dicionários e sim uma referencia a variável dicionario, portanto seria algo como declarei = [dicionario, dicionario, dicionario] ao invés de declarei = [{'a': 0, 'b': 0, 'c': 0}, {'a': 1, 'b': 0, 'c': 1}] ou seja sempre que você modificar a variável dicionário, você estaria modificando a lista como um todo, pois seus valores são referencias a variável dicionário. Vou tentar exemplificar isso numa imagem. Perceba que em nenhum momento eu inseri este valor 5 na variável B, só modifiquei a variável A. Portanto uma maneira de corrigir seu código é criar variáveis diferentes ou caso precise usar mesmo valores utilize o .copy( ) que desta forma você não estará mais referenciando a variável usada antes, veja o mesmo exemplo que citei a cima. Desta forma ao modificar a variável A a B não será modificada também É bem confuso mesmo essa questão 😅 Sugiro você dar uma lida em alguns artigos, ficará mais claro de entender isso. Segue abaixo um artigo sobreVARIÁVEIS, VALORES E REFERÊNCIAS Enfim espero que isso consiga resolver sua dúvida, caso contrario estou a disposição para tentar lhe ajudar. 👍 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now