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