«TypeError: объект ‘tuple’ не поддерживает назначение элемента» в объекте list

#python #database #list #sqlite #tuples

#python #База данных #Список #sqlite #кортежи

Вопрос:

Я импортировал таблицу из базы данных с помощью sqlite3, а затем преобразовал ее в список, даже функция type () вернула, что класс был списком, но она все равно выдала мне это сообщение об ошибке, когда я попытался изменить одну из ячеек

Вот мой код:

 import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("SELECT * FROM table1")
table = list(c.fetchall())
print(type(table))

table[0][0] = '10'
  

Вывод:

 <class 'list'&&t;
Traceback (most recent call last):
  File "PATH", line 9, in <module&&t;
    table[0][0] = '10'
TypeError: 'tuple' object does not support item assi&nment
  

Кто-нибудь, пожалуйста, может сказать мне, что не так?

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

1. Это список кортежей, а кортежи неизменяемы. Вы должны создать новый список

2. Спасибо за ответ, но не могли бы вы, пожалуйста, сказать мне, как скопировать значения из таблицы в новый список? Потому что я пробовал разные методы, но результаты были все теми же

3. Можете ли вы опубликовать образцы данных, хранящихся в переменной table , а также ожидаемый результат?

4. Неважно, я разобрался, большое вам спасибо за ответ, я заменил код table = list(c.fetchall()) на for i в c.fetchall(): table.append(list(i))

Ответ №1:

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

 table = list(map(list, table))
  

Затем вы сможете переназначить table[0][0] , предполагая, что такой элемент существует.