Список 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_list2 объекта, каждый объект содержит 3 документа, и каждый документ содержит один и тот же аннотатор, поэтому другой был изменен после append. Я попытался решить эту проблему, используя некоторые похожие проблемы, которые я нашел в сети:

  1. tasks_list.append(created_documents_in_iaa[:])

  2. tasks_list.append(created_documents_in_iaa.copy())

tasks_list2 += tasks_list2[:] + created_documents_in_iaa tasks_list.append(tasks_list2)

Тем не менее, это все та же проблема. Любое предложение, пожалуйста?

0 ответов

Другие вопросы по тегам