Похоже, проблема в том, что вы на самом деле всегда используете один и тот же список.
Определение files_in_subfolder = []
создает список и назначает указатель на этот список в переменнойВы только что определили.Так что же происходит, когда вы присваиваете self.folders_and_files[subfolder] = files_in_subfolder
, вы сохраняете только указатель на свой список (который одинаков на каждой итерации) в словаре, а не на фактический список.
Позже, когда вы делаетеfiles_in_subfolder.clear()
вы очищаете список, на который указывал этот указатель, и, следовательно, на все записи словаря (как это всегда был один и тот же список).
Чтобы решить эту проблему, я бы порекомендовал вам:создайте новый список для каждой отдельной записи в вашем словаре вместо очистки его для каждой итерации.Это, переместите определение files_in_subfolder
снаружи цикла внутрь него.
Надеюсь, это поможет!