Я не могу опустить голову над этим. Или я слишком усложняю вещи? Я пытаюсь сделать этот код более «Pythonic».Понимание Python, словарь списков
statuses = {record['id'] : [] for record in data}
for record in data:
for status in record['statuses']:
data = {
'status_code': status['statusCode'],
'short_desc': status['statusShortDesc'],
}
if 'statusLongDesc' in status:
data.update({'long_desc': status['statusLongDesc']})
else:
data.update({'long_desc': ''})
statuses[record['id']] += [data]
}
}
несколько проблем здесь, код ниже, я знаю, это неправильно, но я пытаюсь донести то, что я хочу с вне зная, как:
Как обновить список в словаре в понимание? Вдоль линий этого. Будет ли это работать? Что-то мне не кажется правильным. Разве я увлекся фигурными скобками?
statuses = { { record['id']: list({ 'status_code': status['statusCode'], 'short_desc': status['statusShortDesc'], 'long_desc': '' }) } for record in data for status in record['statuses'] }
Это производит TypeError: unhashable type: 'dict'
- Как я тогда не повторить ту часть данных, как в моем исходном коде для настройки long_desc? (Мой словарь на самом деле намного длиннее, и кажется сумасшедшим повторить все это для одной строки.) Например:
then if 'statusLongDesc' in status list.extend('long_desc': status['statusLongDesc'])
, добавленный к вышеуказанному пониманию.
Ваш оригинальный код намного более «pythonic» IMO. Это очень легко читать, и цель понятна. Быть питоническим означает короткий, лаконичный и легко читаемый. –