Добавить в словарь список двойной вложенности в качестве значения и сериализовать его элементы
Прошу, подскажите. Есть переменная
response = [
('Строка1', [...], datetime.date(2017, 11, 3), datetime.date(2020, 11, 16), datetime.date(2020, 11, 16), 534531),
...,
('Строка999', [...], datetime.date(2018, 10, 31), datetime.date(2020, 8, 22), datetime.date(2020, 11, 13), 35448763)
]
Я хочу из нее сделать словарь с помощью defaultdict(list) и даты перевести в формат, пригодный для передачи в json. Однако, с помощью следующего кода:
r = defaultdict(list)
for i in response:
tmp = i[1:]
r[i[0]].append(tmp)
вместо такого словаря
defaultdict(<class 'list'>, {
'Строка1': [[...], datetime.date(2017, 11, 3), datetime.date(2020, 11, 16), datetime.date(2020, 11, 16), 534531],
...,
'Строка999': [[...], datetime.date(2018, 10, 31), datetime.date(2020, 8, 22), datetime.date(2020, 11, 13), 35448763]})
у меня получается словарь со вложенным кортежем, который только мешает:
defaultdict(<class 'list'>, {
'Строка1': [([...], datetime.date(2017, 11, 3), datetime.date(2020, 11, 16), datetime.date(2020, 11, 16), 534531)],
...,
'Строка999': [([...], datetime.date(2018, 10, 31), datetime.date(2020, 8, 22), datetime.date(2020, 11, 13), 35448763)]})
Таким образом, мне сейчас непонятны две вещи: как модифицировать код, чтобы не было вложенного кортежа, и как изменить даты, чтобы их принимал json?
Update: решилось все заменой метода append на extend и преобразованием дат в строку. Код выглядит так:
r = defaultdict(list)
for i in response:
tmp = list(i[1:])
r[i[0]].extend(tmp)
for i in r.values():
i[1] = str(i[1])
i[2] = str(i[2])
i[3] = str(i[3])