Приветствую! Не могу понять почему не правильно заполняется словарь с вложенными словарями из функции:
Создаю его так
def build_table(_list, _list2, x):
table = {i:{} for i in _list}
for i in _list:
table[i] = {s:x for s in _list2}
return table
table = build_table(['ALL', 'NOT ALL'], ['A', 'B'], {})
table
#Вывод: {'ALL': {'A': {}, 'B': {}}, 'NOT ALL': {'A': {}, 'B': {}}}
Делаю такой же вручную
table_1 = {'ALL': {'A': {}, 'B': {}}, 'NOT ALL': {'A': {}, 'B': {}}}
table == table_1
#Вывод: True
Заполняю значениями из списка
list_to_fill = [['ALL', 'A', 'aaaa', 111], ['ALL', 'B', 'bbb', 222]]
for row in list_to_fill:
table[row[0]][row[1]][row[2]] = row[3]
table_1[row[0]][row[1]][row[2]] = row[3]
Получаю разные словари:
table
#Вывод: {'ALL': {'A': {'aaaa': 111, 'bbb': 222}, 'B': {'aaaa': 111, 'bbb': 222}},
'NOT ALL': {'A': {'aaaa': 111, 'bbb': 222}, 'B': {'aaaa': 111, 'bbb': 222}}}
table_1
#Вывод: {'ALL': {'A': {'aaaa': 111}, 'B': {'bbb': 222}}, 'NOT ALL': {'A': {}, 'B': {}}}
Почему такое происходит? Как исправить? Пробовал вставлять везде в функции deepcopy(), но не помогло