Невозможно обновить словарь

#python #dictionary

#python #словарь

Вопрос:

Я сталкиваюсь с этой проблемой при попытке закодировать решатель судоку (с некоторыми частями, ссылающимися на http://norvig.com/sudoku.html )

Вот код, который я сделал до сих пор со ссылкой на приведенный выше URL.

 puzzle = '003198070890370600007004893030087009079000380508039040726940508905800000380756900'
cell = '123456789'
cell_break = ['123','456','789']


def generate_keys(A, B):
  "Cross product of elements in A and elements in B."
  return [a b for a in A for b in B]

#print generate_keys(cell,cell)

def dict_puzzle(puzzle,cell):
  'Making a dictionary to store the key and values of the puzzle'
  trans_puzzle = {}
  key_list = generate_keys(cell,cell)
  i=0
  for x in puzzle:
    trans_puzzle[str(key_list[i])] = x
    i = i   1
    return trans_puzzle

dict_puzzle(puzzle,cell)['11'] = 'die'
print dict_puzzle(puzzle,cell)['11']  

для последних 2 строк кода я попытался изменить словарь, но безрезультатно. Он просто возвращает мне 0, которое является исходным значением. (т.е. мутация не была успешной)

Я не уверен, почему это происходит: (

Комментарии:

1. При каждом запуске dict_puzzle() создается совершенно новый словарь, а все предыдущие изменения удаляются. Я думаю, вам просто нужно вызвать его один раз , сохранить результат под каким-либо именем и выполнить все дальнейшие операции с этим именем.

Ответ №1:

Вы снова вызываете функцию, поэтому она возвращает новый словарь. Вам нужно присвоить результат первого вызова переменной и изменить ее.

 result = dict_puzzle(puzzle,cell)
result['11'] = 'die'
print(result)