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