Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2017 08:46:46

OrangeGrunge
Зарегистрирован: 2017-02-13
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь списков. Проблема с наполнением.

Здравствуйте!

В общем случае имеется некий словарь, значения в котором являются списками.
Необходимо дополнить один из этих списков значением.

Пример:

 p = ['q','w','e']
r = dict.fromkeys(p,[])
r['q'].append(1)
print(r)

Что я получаю на выводе:
 {'q':[1],'w':[1],'e':[1]}

Что я хотел получить:
 {'q':[1],'w':[],'e':[]}

Подскажите, пожалуйста, в чём ошибка.
Спасибо.

Отредактировано OrangeGrunge (Фев. 13, 2017 08:50:26)

Офлайн

#2 Фев. 13, 2017 08:59:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Словарь списков. Проблема с наполнением.

OrangeGrunge
r = dict.fromkeys(p,)
Это классическая ошибка из палаты мер и весов.
Список, который вы имеете в качестве значений - один и тот же. Вы передали в функцию ссылку на список, получили словарь, в котором N раз участвует один и тот же список. Он нигде не создается заново.
Вот так будет правильно
 p = ['q', 'w', 'e']
r = {l: [] for l in p}
r["q"].append(4)
print(r)



Офлайн

#3 Фев. 13, 2017 09:06:06

OrangeGrunge
Зарегистрирован: 2017-02-13
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь списков. Проблема с наполнением.

Теперь всё стало достаточно очевидно. Спасибо, FishHook.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version