>>tabuleiro[lin][col] = peca

use peca.copy() here or else a deep copy is made.

On Tue, Sep 15, 2015 at 4:45 PM, Rafael David <rdavid...@gmail.com> wrote:
> Hi guys,
>
> I'm newbie in Python (but not a newbie developer). I'm facing a problem with 
> a bidimensional list (list of lists) containing dictionaries. I don't know if 
> I didn't understand how lists and dictionaries work in Python or if there is 
> a mistake in my code that I can't see. In the code I'm printing the list 
> values just after the assignment and they are ok, but when I try to print the 
> list at the end of the function the values are different (repeated). Below is 
> the code and the result in Python 3.4.0. Could you guys please help me with 
> that?
>
> Thanks a lot!
>
> Rafael
>
>>>> def preencherTabuleiroInicial():
>     tabuleiro = [[None for x in range(8)] for y in range(8)]
>     peca = {}
>     for lin in range(8):
>         for col in range(8):
>             if lin == 0 or lin == 1 or lin == 6 or lin == 7:
>                 if lin == 0 or lin == 1:
>                     peca['cor'] = 'b'
>                 elif lin == 6 or lin == 7:
>                     peca['cor'] = 'p'
>                 if lin == 1 or lin == 6:
>                     peca['nome'] = 'p'
>                 elif col == 0 or col == 7:
>                     peca['nome'] = 't'
>                 elif col == 1 or col == 6:
>                     peca['nome'] = 'c'
>                 elif col == 2 or col == 5:
>                     peca['nome'] = 'b'
>                 elif col == 3:
>                     peca['nome'] = 'd'
>                 else:
>                     peca['nome'] = 'r'
>                 tabuleiro[lin][col] = peca
>             print(str(lin) + ' ' + str(col) + ' ' + str(tabuleiro[lin][col]))
>     print()
>     print(tabuleiro)
>
>>>>
>>>> preencherTabuleiroInicial()
> 0 0 {'nome': 't', 'cor': 'b'}
> 0 1 {'nome': 'c', 'cor': 'b'}
> 0 2 {'nome': 'b', 'cor': 'b'}
> 0 3 {'nome': 'd', 'cor': 'b'}
> 0 4 {'nome': 'r', 'cor': 'b'}
> 0 5 {'nome': 'b', 'cor': 'b'}
> 0 6 {'nome': 'c', 'cor': 'b'}
> 0 7 {'nome': 't', 'cor': 'b'}
> 1 0 {'nome': 'p', 'cor': 'b'}
> 1 1 {'nome': 'p', 'cor': 'b'}
> 1 2 {'nome': 'p', 'cor': 'b'}
> 1 3 {'nome': 'p', 'cor': 'b'}
> 1 4 {'nome': 'p', 'cor': 'b'}
> 1 5 {'nome': 'p', 'cor': 'b'}
> 1 6 {'nome': 'p', 'cor': 'b'}
> 1 7 {'nome': 'p', 'cor': 'b'}
> 2 0 None
> 2 1 None
> 2 2 None
> 2 3 None
> 2 4 None
> 2 5 None
> 2 6 None
> 2 7 None
> 3 0 None
> 3 1 None
> 3 2 None
> 3 3 None
> 3 4 None
> 3 5 None
> 3 6 None
> 3 7 None
> 4 0 None
> 4 1 None
> 4 2 None
> 4 3 None
> 4 4 None
> 4 5 None
> 4 6 None
> 4 7 None
> 5 0 None
> 5 1 None
> 5 2 None
> 5 3 None
> 5 4 None
> 5 5 None
> 5 6 None
> 5 7 None
> 6 0 {'nome': 'p', 'cor': 'p'}
> 6 1 {'nome': 'p', 'cor': 'p'}
> 6 2 {'nome': 'p', 'cor': 'p'}
> 6 3 {'nome': 'p', 'cor': 'p'}
> 6 4 {'nome': 'p', 'cor': 'p'}
> 6 5 {'nome': 'p', 'cor': 'p'}
> 6 6 {'nome': 'p', 'cor': 'p'}
> 6 7 {'nome': 'p', 'cor': 'p'}
> 7 0 {'nome': 't', 'cor': 'p'}
> 7 1 {'nome': 'c', 'cor': 'p'}
> 7 2 {'nome': 'b', 'cor': 'p'}
> 7 3 {'nome': 'd', 'cor': 'p'}
> 7 4 {'nome': 'r', 'cor': 'p'}
> 7 5 {'nome': 'b', 'cor': 'p'}
> 7 6 {'nome': 'c', 'cor': 'p'}
> 7 7 {'nome': 't', 'cor': 'p'}
>
> [[{'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 
> 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 
> 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}], [{'nome': 
> 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, 
> {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 
> 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}], [None, None, 
> None, None, None, None, None, None], [None, None, None, None, None, None, 
> None, None], [None, None, None, None, None, None, None, None], [None, None, 
> None, None, None, None, None, None], [{'nome': 't', 'cor': 'p'}, {'nome': 
> 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, 
> {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 
> 'p'}, {'nome': 't', 'cor': 'p'}], [{'nome': 't', 'cor': 'p'}, {'nome': 't', 
> 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 
> 't', 'cor': 'p'}, {'nom
 e'
>  : 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}, {'nome': 't', 'cor': 'p'}]]
>>>>
> --
> https://mail.python.org/mailman/listinfo/python-list
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to