Потому что
list(data['entities_found'][0])
Создает новый список , для которого вы затем используете присвоение на основе индекса, но никогда не сохраняете ссылку на новый список, поэтому он немедленно восстанавливается. Оригинальный объект никогда не трогается.
Даже если бы кортежи были изменяемыми, как списки, это не сработало бы. Обратите внимание:
>>> x = [1, 2, 3]
>>> list(x)[0] = 99
>>> x
[1, 2, 3]
Или, может быть, более ясно:
>>> ts = [('a','b'), ('c','d')]
>>> list(ts[0]) # convert object at index 0 to list
['a', 'b']
>>> ts
[('a', 'b'), ('c', 'd')] # original object hasn't changed
Вам нужно подойти к этому, сделав что-то вроде:
>>> ts = [('a','b'), ('c','d')]
>>> first, second = ts
>>> ts[0] = 'foo', first[1]
>>> ts[1] = 'bar', second[1]
>>> ts
[('foo', 'b'), ('bar', 'd')]