2013-12-18 3 views
0

Я хотел бы прочитать все source за id в 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'} 

Edit: Я хотел бы видеть этот результат:

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: Вложенный список понимается там. Но я споткнулся о том, что такое список, и что такое словарь в первую очередь. Теперь все работает. –

Смежные вопросы