Список Python перезаписывается каждый раз, когда предыдущие элементы
Цель моего приложения - создать копию документов и вставить их в базу данных для каждого аннотатора, например, предположим, что у главного пользователя есть 3 документа и два аннотатора, скажем, у первого аннотатора есть электронная почта [email protected][электронная почта защищена][электронная почта защищена][электронная почта защищена] и у второго есть электронная почта , наконец, мне нужно вставить в базу данных 3 документа для и 3 других документа для . Поэтому для этого я сначала создал список, содержащий копию документов, и я не назначал аннотатора
created_documents_in_iaa = []
created_documents_in_iaa += [DocumentIAATask(
name=document.name,
spans=document.spans,
entity=document.entity,
original_document=document,
IAA_Task=iaa_task) for document in all_documents_in_iaa.iterator(chunk_size=1)]
И после этого я добавил аннотатор к каждому документу, и я добавляю каждый измененный
created_documents_in_iaa
список к
tsks_list
:
tasks_list = []
for user in users_instance_list:
try:
for i in range(len(created_documents_in_iaa)):
created_documents_in_iaa[i].annotator = user
tasks_list.append(created_documents_in_iaa)
except Exception as e:
print(e)
Наконец, я создал копию документов в базе данных PostgreSQL:
for task in tasks_list:
DocumentIAATask.objects.bulk_create(task)
Однако в результате я нашел 6 документов внутри таблицы первого аннотатора, а для другого ничего, после отладки кода я обнаружил, что каждый раз список перезаписывается, то есть когда я добавляю первый аннотатор в таблицу 3 документа, и когда я сделал то же самое для другого аннотатора, список перезаписал предыдущий, то есть я нашел в
tasks_list
2 объекта, каждый объект содержит 3 документа, и каждый документ содержит один и тот же аннотатор, поэтому другой был изменен после
append
. Я попытался решить эту проблему, используя некоторые похожие проблемы, которые я нашел в сети:
tasks_list.append(created_documents_in_iaa[:])
tasks_list.append(created_documents_in_iaa.copy())
tasks_list2 += tasks_list2[:] + created_documents_in_iaa
tasks_list.append(tasks_list2)
Тем не менее, это все та же проблема. Любое предложение, пожалуйста?