2017-04-20 253 views
0

我有一个巨大的字典列表从JSON以下列方式附加到列表中。我想从每本字典中访问“原始”,并将其全部存储在字典列表或一个巨大的字典中。最终目标是访问raw中的密钥并使用pandas将它们转换为数据帧列。JSON:遍历嵌套字典的列表

results = [{ 
    'FirstSentences': None, 
    'PrintableUri': '', 
    'hasHtmlVersion': False, 
    'hasMobileHtmlVersion': False, 
    'isRecommendation': False, 
    'isTopResult': False, 
    'parentResult': None, 
    'percentScore': 100.0, 
    'printableUriHighlights': [], 
    'rankingInfo': None, 
    'rating': 3.0, 
    'raw': {'distance': 1892760.0, 
    'distancekm': 1892.76, 
    'distancemi': 1176.11, 
    'objecttype': 'Account', 
    'objecttypename': 'Account', 
    'plocepp': 'False', 
    'plochpp': 'False', 
    'plocsdp': 'False'}}] 

的代码,我得到的错误是如下:

response = [x['raw'] for x in results] 

File "<ipython-input-90-64993f9dcd67>", line 1, in <module> 
    response = [x['raw'] for x in results] 

TypeError: list indices must be integers, not str 

我寻觅了很多答案,但在这里无法找到解决我的问题。预先感谢您的帮助。

+0

你的数据有一个错字.... –

+3

缺少'}'收出第一部字典。最后一行是'plocsdp':'False'}}]'''''''''''''''' – davedwards

+0

对不起,我发布了一个错误,发布了我现在纠正的问题。该代码仍然给我同样的错误。 –

回答

0

关键是遍历列表和列表中的每个元素,索引字典键'原始'。 一个简单的方法是迭代列表并访问字典中的'raw'键。

简单的for循环的方法:

response = [] 
for d in results: 
    response.append(d['raw']) 

列表解析方法

response = [d['raw'] for d in results]