Моя цель - добавить значение в список, который существует во вложенном словаре.
Я создал вложенный словарь рекурсивно, используя метод, который я написал. Мне нужен этот метод для создания словаря, потому что он может иметь любое количество «измерений».
def create_nested_dict(dimensions):
if len(dimensions) == 1:
return dict.fromkeys(range(dimensions[0]), [])
else:
return dict.fromkeys(range(dimensions[0]), create_nested_dict((dimensions[1:])))
Например, d = create_nested_dict([2, 3])
генерирует словарь d
с ключами сначала в range(2)
, а затем в range(3)
. Примерно так:
{0: {0: [], 1: [], 2: []}, 1: {0: [], 1: [], 2: []}}
Однако теперь мне нужно добавить значения в списки, содержащиеся в словаре.
Если я попытаюсь добавить значение в список в позиции [0][1]
вот так (d[0][1]).append(3)
, значение добавляется во все списки:
{0: {0: [3], 1: [3], 2: [3]}, 1: {0: [3], 1: [3], 2: [3]}}
Если я использую вместо этого оператор splat d[0][1] = [*d[0][1], 3]
:
, я получаю такой результат:
{0: {0: [], 1: [3], 2: []}, 1: {0: [], 1: [3], 2: []}}
, что мне тоже не нужно.
Ожидаемый результат - получить значение, добавленное только к позиции [0][1]
:
{0: {0: [], 1: [3], 2: []}, 1: {0: [], 1: [], 2: []}}
Я не знаю, это поведение имеет какое-то отношение к методу, который я использовал для создания словаря или ключей, являющихся целыми числами, или если я просто неправильно храню. .