2016-07-15 16 views
-1

Ich kämpfe um meinen Kopf um den besten Weg, um den Titel, Künstlername aus der folgenden Liste zu bekommen.Der beste Weg, um Informationen aus dem Wörterbuch zu bekommen

{'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}]}]} 

ich acoustic.match bin mit Songs übereinstimmen und die obige Liste ist, was zurückgegeben wird.

hat es etwas eleganter als sein, wie ich es tue, das ist:

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

Alle Zeiger?

***** Edit ***** Also - in weiterer Überprüfung - gibt es Beispiel-Code, dem ich versuche zu folgen - aber es scheint nicht zu funktionieren.

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

acoustid.match gibt das Wörterbuch/die Liste oben zurück.

+3

Ein Wörterbuch ist ein Schlüssel/Wert-Paar. Um den Wert zu erhalten, geben Sie ihm den Schlüssel. Nur so können Informationen aus einem Wörterbuch abgerufen werden. Wenn das nicht zu Ihnen passt, verwenden Sie eine andere Datenstruktur – wnnmaw

+0

Sie können es lesbarer machen, indem Sie Zwischenvariablen verwenden. 'first_song_results = Lied ['Ergebnisse'] [0]; Aufnahmen = erste_singen_Ergebnisse ['Aufnahmen'] [0]; recordings ['title'] ' –

+0

Beachten Sie auch, dass ein Wörterbuch wie dieses erstellt wird, um viele Informationen zu packen, die Sie wahrscheinlich überschleifen möchten. 'für Lied im Lied ['Ergebnisse']: für die Aufnahme im Lied ['Aufzeichnungen']: Druck (Aufnahme ['Titel'])' –

Antwort

2

Wenn das Diktat Sie stört, möchten Sie es möglicherweise in eine Klasse konvertieren.

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

Die Daten, die Sie erhalten, ist eine Mischung aus Diktat und Liste. Da auf die Liste nur über den Index zugegriffen werden kann, glaube ich nicht, dass es einen besseren Weg dafür geben könnte, wenn Sie Ihre Daten nicht vorverarbeiten, um diese extra verschachtelte Liste zu entfernen.

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/13022108) –

+0

Es gibt keinen Link in meinem Post, Worauf beziehen Sie sich? –

Verwandte Themen