Я могу обновить вложенный словарь после его инициализации, используя для l oop, но не после использования словаря. Почему это так?
Это работает:
def calendar_init(year, month, habits):
date_list = dates_in_month(year, month)
calendar_init = dict()
for mydate in date_list:
calendar_init[mydate] = {'mood': None}
for habit in habits:
calendar_init[mydate][habit] = None
return calendar_init
def create_calendar(year, month, habits, entries, moods):
new_calendar = calendar_init(year, month, habits)
for entry in entries:
new_calendar[entry.day][entry.habit] = entry
for mood in moods:
new_calendar[mood.day]['mood'] = mood
return new_calendar
, но это не так:
def calendar_init(year, month, habits):
date_list = dates_in_month(year, month)
merged_dict = {**dict.fromkeys(habits, None), **{'mood': None}}
calendar_init = {mydate: merged_dict for mydate in date_list}
return calendar_init
def create_calendar(year, month, habits, entries, moods):
new_calendar = calendar_init(year, month, habits)
for entry in entries:
new_calendar[entry.day][entry.habit] = entry
for mood in moods:
new_calendar[mood.day]['mood'] = mood
return new_calendar