2016-07-15 21 views
-1

私はタイトル、アーティスト名を以下のリストから得るための最善の方法の周りに私の頭を包み込むのに苦労しています。辞書の情報を取得する最善の方法

{'status': 'ok', 'results': [{'score': 0.94222, 'id': 'ca222fc1-d1ed-4c30-b21f-eb533cc909aa', 'recordings': [{'artists': [{'id': '84dc4f23-c0b8-4fe1-bbca-a3993ddc8fc2', 'name': 'Primus'}], 'id': '2f6227ba-e061-48b2-a700-15e209ed3650', 'title': 'Wynona’s Big Brown Beaver', 'duration': 264}, {'artists': [{'id': '84dc4f23-c0b8-4fe1-bbca-a3993ddc8fc2', 'name': 'Primus'}], 'id': '520ebd07-d12c-429c-a137-19d13303a706', 'title': 'Wynona’s Big Brown Beaver', 'duration': 261}, {'artists': [{'id': '84dc4f23-c0b8-4fe1-bbca-a3993ddc8fc2', 'name': 'Primus'}], 'id': '757439ce-58b1-4808-af3b-3b90092890c1', 'title': 'Wynona’s Big Brown Beaver', 'duration': 262}, {'artists': [{'id': '84dc4f23-c0b8-4fe1-bbca-a3993ddc8fc2', 'name': 'Primus'}], 'id': 'a432eaa4-e5bb-414a-9595-cdaa46d48d6e', 'title': 'Wynona’s Big Brown Beaver', 'duration': 264}, {'artists': [{'id': '84dc4f23-c0b8-4fe1-bbca-a3993ddc8fc2', 'name': 'Primus'}], 'id': 'c344a3f9-1755-4f1b-b227-8a5918713466', 'title': 'Wynona’s Big Brown Beaver', 'duration': 261}, {'artists': [{'id': '84dc4f23-c0b8-4fe1-bbca-a3993ddc8fc2', 'name': 'Primus'}], 'id': 'e658eb35-9d15-45d8-965c-1abcb19c8bc9', 'title': 'Wynona’s Big Brown Beaver', 'duration': 264}]}]} 

私は曲を一致させるためにacoustic.matchを使用しています。上記リストは返されます。

どのように私はあることをやっているよりもエレガントな何かがなければならない:任意のポインタ

print(song['results'][0]['recordings'][0]['title']) 

*****編集***** これ以上のレビューでは、私が従おうとしているコード例がありますが、それを動作させるようには見えません。

for score, recording_id, title, artist in acoustid.match(apikey, path): 

acoustid.matchは上記の辞書/リストを返します。

+3

辞書はキーと値のペアです。値を取得するには、キーを与えます。これが辞書から情報を取得する唯一の方法です。それがあなたに合っていない場合は、別のデータ構造を使用してください。 – wnnmaw

+0

中間変数を使用して読みやすくすることができます。 'first_song_results =歌['results'] [0];録音= first_song_results ['レコーディング'] [0]; recordings ['title'] ' –

+0

このような辞書は、おそらくループしたいと思う多くの情報をパックするように作られています。 '' results '':曲の録音 '' recordings '':print( '[title']) ' –

答えて

2

dictがあなたを悩ましている場合は、それをクラスに変換することができます。

class Music(): 

    def __init__(self, song): 
     self.title = song['results'][0]['recordings'][0]['title'] 
     self.artist = song['results'][0]['recordings'][0]['artist'][0]['name'] 
     # and so on and so forth 


new_song = Music(song) 
>>> print new_song.artist 
Primus 
>>> print new_song.title 
Wynona’s Big Brown Beaver 
0

取得するデータは、dictとlistの組み合わせです。リストはインデックスを介してのみアクセスできるので、余分なネストされたリストを削除するためにデータを前処理しない限り、それを実行するより良い方法があるとは思われません。

+0

このリンクは質問に答えるかもしれませんが、ここで答えの重要な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 13022108) –

+0

私のポストにはリンクがありません、何を参照していますか? –

関連する問題