Как построить вложенное понимание dict, которое имитирует "записи", сделанные с помощью ".to_dict"?
Я прочитал файл CSV в Pandas и преобразовал полученный фрейм данных в список словарей для каждой строки, используя функцию to_dict(orient='records'). Сокращенная версия списка выглядит так:
records = [{'addjob': 'ADDJOB',
'age': 'AGE',
'disab': 'DISCURR13',
'eth': 'ETHUKEUL',
'full': 'FTPT'},
{'addjob': 'ADDJOB',
'age': 'AGE',
'disab': 'DISCURR13',
'eth': 'ETHUKEUL',
'full': nan}]
Я пытаюсь подражать этой структуре, используя словесное понимание следующим образом:
cleaned_records = OrderedDict([
{k:v for k,v in i} for i in records
])
РЕДАКТИРОВАТЬ: убрал 'OrderedDict', поскольку это было ошибкой (ошибка та же):
cleaned_records = [{k:v for k,v in i} for i in records]
Тем не менее, это дает мне следующую ошибку:
Причина, по которой я пытаюсь это сделать, заключается в том, что я могу удалить эти ключи из словарей, значения которых равны нулю, прежде чем передавать их в другой набор функций.
Я занимаюсь этим уже довольно давно, и я озадачен тем, почему это понимание не работает. Может кто-нибудь мне помочь?
1 ответ
Вы просто пропускаете.items() или.iteritems() при извлечении dict.
In [28]: [{k:v for k,v in i.iteritems()} for i in records]
Out[28]:
[{'addjob': 'ADDJOB',
'age': 'AGE',
'disab': 'DISCURR13',
'eth': 'ETHUKEUL',
'full': 'FTPT'},
{'addjob': 'ADDJOB',
'age': 'AGE',
'disab': 'DISCURR13',
'eth': 'ETHUKEUL',
'full': nan}]