Как построить вложенное понимание 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}]
Другие вопросы по тегам