Неправильное добавление элемента в список
Есть небольшой код:
from collections import defaultdict
basket = defaultdict(list)
item = dict.fromkeys(['id','cou'])
item['id'] = 3
item['cou'] = 12
basket[11324].append(item)
item['id'] = 11
item['cou'] = 26
basket[11324].append(item)
print(basket)
Но на выходе получается что добавляется два последних элемента:
defaultdict(<class 'list'>, {670142777: [{'id': 11, 'cou': 26}, {'id': 11, 'cou': 26}]})
Почему так происходит?
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
При добавлении словаря в список вы добавляете ссылку на существующий объект, потом в этом же объекте меняете значения, и еще раз добавляете этот же словарь (точнее, ссылку на него) в список - поэтому в списке два раза отображается словарь с одинаковыми значениями.
Чтобы такое не происходило, создавайте каждый раз новый словарь:
from collections import defaultdict
basket = defaultdict(list)
item = {'id': 3, 'cou': 12}
basket[11324].append()
item = {'id': 11, 'cou': 26}
basket[11324].append(item)
print(basket)