Вот простой код, который выполняет операции по спискам:странное поведение со списком словарей в Python
>>> a = [0] * 5
>>> a
[0, 0, 0, 0, 0]
>>> a[0] = 5
>>> a
[5, 0, 0, 0, 0]
>>>
На данный момент ничего ненормального.
Теперь я пытаюсь сделать то же самое со списком словарей вместо списка целых чисел:
>>> a = [{}] * 5
>>> a
[{}, {}, {}, {}, {}]
>>> a[0]['b'] = 4
>>> a
[{'b': 4}, {'b': 4}, {'b': 4}, {'b': 4}, {'b': 4}]
>>>
Я не понимаю, почему все элементы моего списка модифицируются ...
Может ли кто-нибудь сказать мне, почему? А также обеспечить обходное решение?
См [это] (http://stackoverflow.com/a/8240157/566644) ответ для объяснения углубленному этого поведения. –
Возможный дубликат [Изменение стоимости на нескольких позициях в списке списка при попытке изменения в одном месте] (http://stackoverflow.com/questions/8240054/value-changing-at-multiple-positions-in-a- list-of-list-when-try-to-change-at) – geoffspear