Я не могу добавить значение в словарь с Python с помощью .append () - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу добавить 17 в позиции 2 в моем словаре. Когда я запускаю этот код, везде 17.

dic = dict.fromkeys(range(4), [])

print("dic begin : ", dic)

dic[1].append(17)

print("dic end : ", dic)

Я получаю такой вывод:

('dic begin:', {0: [], 1: [], 2:[], 3: []}) ('dic end:', {0: [17], 1: [17], 2: [17], 3: [17]})

Что такоеЯ делаю не так?

1 Ответ

1 голос
/ 02 ноября 2019

Поэтому, когда вы используете метод dict.fromkeys(keys, value), передается только ссылка на значение! поэтому, когда вы мутируете, все эти парни мутируют. Вы можете использовать это -

dic = {i:[] for i in range(4) }
print("dic begin : ", dic)

dic[1].append(17)
print("dic end : ", dic)

Out-

dic begin :  {0: [], 1: [], 2: [], 3: []}
dic end :  {0: [], 1: [17], 2: [], 3: []}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...