Ошибка при работе с многомерным кортежем. Python

Никак не мог разобраться, что я делаю не так. Есть кортеж следующего содержания

[('28467', '19740', '0'), ('28471', '19740', '0'), ('28472', '20560', '0'), ('28471', '19740', '0'), ('28468', '20560', '0'), ('15872', '20210', '0'), ('12350', '20300', '0'), ('28463', '20210', '1'), ('28467', '19740', '0'), ('28461', '19180', '1'), ('28462', '22300', '0'), ('28461', '19180', '1'),.....

Допустим мне нужно поменять первый элемент "28467"

bd_final_id0_price1_nal2_uid3=list(bd_final_id0_price1_nal2_uid3)
bd_final_id0_price1_nal2_uid3[1][0] = 777

Такая запись выдаёт ошибку:

TypeError: 'tuple' object does not support item assignment

Ответы (1 шт):

Автор решения: CrazyElf

Кортеж - не изменяемый тип. Нужно либо сделать список списков, и тогда вы сможете поменять элемент, либо нужно делать новый список кортежей из старого, с подменой нужного элемента.

Почему не работает ваш способ - вы преобразуете в список только внешнюю коллекцию, которая у вас и так уже список. А то, что у неё (у коллекции, то есть списка) внутри, остаётся тем же чем и было, то есть кортежами. Нужно преобразовать в список все элементы, которые находятся внутри списка. Например, с помощью map:

bd_final_id0_price1_nal2_uid3 = list(map(list, bd_final_id0_price1_nal2_uid3))

Либо через списковое сокращение:

bd_final_id0_price1_nal2_uid3 = [list(x) for x in bd_final_id0_price1_nal2_uid3]
→ Ссылка