2017-11-01 9 views
1

私は一般的にAPIを使いこなそうとしています。これをテストするために、私はスウェーデンの国家公務員のラジオ上のすべてのチャネルのリストを取得するには、コードのこの小さなスニペットをコード化された、と私はチャンネルのIDと名前を印刷したい:辞書のリストに変数が見つからない

import requests as rq 
import json 
from pprint import pprint 

resp = rq.get('http://api.sr.se/api/v2/channels? 
    format=json&indent=TRUE') 

respjson = json.loads(resp.text) 

pprint (respjson['id']) 

そして私が得ますエラー

File "sr-api.py", line 9, in <module> 
pprint (respjson['id']['name']) 
KeyError: 'id' 

は(省略)「respjsonは、」チャンネルの内側に提示辞書を通して見ている、あなたはfolloでそれを行うことができます何をしたい、この

{'channels': [{'channeltype': 'Rikskanal', 
      'color': '31a1bd', 
      'id': 132, 
      'image': 'http://static-cdn.sr.se/sida/images/132/2186745_512_512.jpg?preset=api-default-square', 
      'imagetemplate': 'http://static-cdn.sr.se/sida/images/132/2186745_512_512.jpg', 
      'liveaudio': {'id': 132, 
         'statkey': '/app/direkt/p1[k(132)]', 
         'url': 'http://sverigesradio.se/topsy/direkt/srapi/132.mp3'}, 
      'name': 'P1', 
      'scheduleurl': 'http://api.sr.se/v2/scheduledepisodes?channelid=132', 
      'siteurl': 'http://sverigesradio.se/p1', 
      'xmltvid': 'p1.sr.se'}, 
{'channeltype': 'Lokal kanal', 
      'color': 'c31eaa', 
      'id': 200, 
      'image': 'http://static-cdn.sr.se/sida/images/200/2186775_512_512.jpg?preset=api-default-square', 
      'imagetemplate': 'http://static-cdn.sr.se/sida/images/200/2186775_512_512.jpg', 
      'liveaudio': {'id': 200, 
         'statkey': '/app/direkt/p4 jämtland[k(200)]', 
         'url': 'http://sverigesradio.se/topsy/direkt/srapi/200.mp3'}, 
      'name': 'P4 Jämtland', 
      'scheduleurl': 'http://api.sr.se/v2/scheduledepisodes?channelid=200', 
      'siteurl': 'http://sverigesradio.se/jamtland/', 
      'xmltvid': 'p4jmtl.sr.se'}], 
'copyright': 'Copyright Sveriges Radio 2017. All rights reserved.', 
'pagination': {'nextpage': 'http://api.sr.se/v2/channelsformat=json&indent=true&page=2', 
      'page': 1, 
      'size': 10, 
      'totalhits': 55, 
      'totalpages': 6}} 
+1

はい。なぜあなたは '' id '' 'を仕事に費やしたのですか?きれいに印刷された出力は、トップレベルにそのようなキーがないことをはっきりと示しています...だから、まず '['channels']'を実行する必要があります。これらの 'dict'オブジェクトのそれぞれは' id 'にアクセスする必要があります。 –

+0

私は良く分からなかったので:-) –

答えて

0

チャンネルはリストです。すべてのチャンネルを取得してIDを出力するには、繰り返し実行する必要があります。

# starting from respjson 
respjson = { 
    'channels': [ 
     { 
      'channeltype': 'Rikskanal', 
      'color': '31a1bd', 
      'id': 132, 
      'image': 'http://static-cdn.sr.se/sida/images/132/2186745_512_512.jpg?preset=api-default-square', 
      'imagetemplate': 'http://static-cdn.sr.se/sida/images/132/2186745_512_512.jpg', 
      'liveaudio': {'id': 132, 
          'statkey': '/app/direkt/p1[k(132)]', 
          'url': 'http://sverigesradio.se/topsy/direkt/srapi/132.mp3'}, 
      'name': 'P1', 
      'scheduleurl': 'http://api.sr.se/v2/scheduledepisodes?channelid=132', 
      'siteurl': 'http://sverigesradio.se/p1', 
      'xmltvid': 'p1.sr.se'}, 
     { 
      'channeltype': 'Lokal kanal', 
      'color': 'c31eaa', 
      'id': 200, 
      'image': 'http://static-cdn.sr.se/sida/images/200/2186775_512_512.jpg?preset=api-default-square', 
      'imagetemplate': 'http://static-cdn.sr.se/sida/images/200/2186775_512_512.jpg', 
      'liveaudio': {'id': 200, 
          'statkey': '/app/direkt/p4 jämtland[k(200)]', 
          'url': 'http://sverigesradio.se/topsy/direkt/srapi/200.mp3'}, 
      'name': 'P4 Jämtland', 
      'scheduleurl': 'http://api.sr.se/v2/scheduledepisodes?channelid=200', 
      'siteurl': 'http://sverigesradio.se/jamtland/', 
      'xmltvid': 'p4jmtl.sr.se' 
     } 
    ], 
    'copyright': 'Copyright Sveriges Radio 2017. All rights reserved.', 
    'pagination': { 
     'nextpage': 'http://api.sr.se/v2/channelsformat=json&indent=true&page=2', 
     'page': 1, 
     'size': 10, 
     'totalhits': 55, 
     'totalpages': 6 
    } 
} 

for channel in respjson['channels']: 
    print(channel['id']) 
0

のように見えますウィング...

for dic in respjson['channels']: 
    pprint(dic['id']) 
+0

どうもありがとうございました! –

関連する問題