你如何建立一个模仿“.to_dict”所做的“记录”的嵌套字典理解?

时间:2017-02-28 16:22:55

标签: python dictionary list-comprehension dict-comprehension

我已经将一个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]

然而,它给了我以下错误:

enter image description here

我尝试这样做的原因是,我可以从值为null的字典中删除这些键,然后再将它们传递给另一组函数。

我已经在这一段时间了很长一段时间,我很困惑为什么这个词汇理解不起作用。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

你只是在dict提取上缺少.items()或.iteritems()。

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}]