2013-12-18 148 views
0

我想阅读所有sourceid在看起来像这样的json文件中。 其中一个id可以有两个来源,有时为零来源。阅读列表中的字典词典

[ 
    { 
     "trailers": { 
      "quicktime": [], 
      "youtube": [ 
       { 
        "source": "source1", 
        "type": "Trailer", 
        "name": "Vf", 
        "size": "HD" 
       }, 
     { 
        "source": "source2", 
        "type": "Trailer", 
        "name": "Vf", 
        "size": "HD" 
       } 
      ], 
      "id": 57417 
     }, 

    { 
     "trailers": { 
      "quicktime": [], 
      "youtube": [], 
      "id": 57418 
     } 
] 

我尝试了许多解决方案,我停在这其中,它不也行:

from itertools import chain 
trailers = {} 
for item in j:   
    if item['trailers']: 
     e = item['trailers'] 
     for k,value in e.iteritems(): 
      if k == "youtube": 
       for each_dict in value: 
        for innerk, innerv in each_dict.iteritems(): 
         if innerk == "source" : 
          trailers = dict(trailers.items() , {'trailer' : 'None'}.iteritems())                 
         else: 
          trailers = {'trailer' : 'None'} 

编辑: 我希望看到这样的结果:

57417, source1, source2 
57418, None 

你有什么建议吗?

+0

你到底想达到什么目的?在YouTube上查找所有预告片? –

+0

你期望什么输出? –

+0

嗯......你有没有考虑过'import json'? – inspectorG4dget

回答

0

查找YouTube上的所有拖车:

trailers = {film['trailers']['id']: [source['source'] for source in film['trailers'].get('youtube', [])] 
      for film in j} 

这将产生:

>>> {film['trailers']['id']: [source['source'] for source in film['trailers'].get('youtube', [])] 
...    for film in j} 
{57417: ['source1', 'source2'], 57418: []} 
+0

@SteveJessop:在那里嵌套列表理解。但是我绊倒了什么是列表,什么是第一个字典。现在都在工作。 –