Функция swap_elements
должна поменять местами элементы в dict
и сохранить моментальные снимки результирующего dict
, прежде чем поменять местами элементы обратно, чтобы сохранить исходную целостность.
Например:
swap_elements({0: [1, 2], 1: [3, 4]}, [(0, 1), (1, 0)], (0, 0))
Должен вернуть
{'entry 0': {0 :[2, 1], 1: [3, 4]},
'entry 1': {0: [3, 2], 1: [1, 4]}
Вот код.
def swap_elements(grid, new_positions, current_x_y):
modified_grids_1 = {}
i = 0
# original = grid
for pos in new_positions:
# print(pos[0], pos[1], current_x_y[0], current_x_y[1])
# print(grid[pos[0]][pos[1]], grid[current_x_y[0]][current_x_y[1]])
grid[pos[0]][pos[1]], grid[current_x_y[0]][current_x_y[1]] = grid[current_x_y[0]][current_x_y[1]], grid[pos[0]][pos[1]]
# print_grid(grid)
modified_grids_1.update({"entry "+str(i): grid})
# print_grid(modified_grids[i])
i += 1
grid[current_x_y[0]][current_x_y[1]], grid[pos[0]][pos[1]] = grid[pos[0]][pos[1]], grid[current_x_y[0]][current_x_y[1]]
# print_grid(grid)
print(modified_grids_1)
# for k in modified_grids.keys():
# print_grid(modified_grids.get(k))
return modified_grids_1
Я получил измененное значение сетки, правильно вставленное в словарь modified_grids_1
в цикле for.Но вне цикла for все значения элемента, вставленные в цикл for, возвращаются к исходному значению.