Jump to content

Replicando resultado


Recommended Posts

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

  • Pessoal da TecnoSpeed

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.

image.png

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.

image.png

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 sobre

VARIÁ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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Who's Online   0 Members, 0 Anonymous, 24 Guests (See full list)

    • There are no registered users currently online


×
×
  • Create New...