2017-07-24 7 views
0

Ich versuche, Ergebnisse als eine Variable zu speichern, um dann nur einen bestimmten Teil der Ausgabe anzuzeigen.Versucht, dict als Variable zu speichern

Wenn ich

results_print(results) 

schreiben druckt es richtig, aber ich kann es aus irgendeinem Grund nicht als Variable speichern.

Dies ist der Inhalt der Ergebnisse:

{'pageInfo': {'resultsPerPage': 1, 'totalResults': 1}, 'items': [{'snippet': {'publishedAt': '2013-10-20T10:33:50.000Z', 'country': 'SE', 'localized': {'description': 'Trap Town, the best trap music out there.\n\nSubmissions: [email protected]', 'title': 'Trap Town'}, 'customUrl': 'traptownmusic', 'title': 'Trap Town', 'description': 'Trap Town, the best trap music out there.\n\nSubmissions: [email protected]', 'thumbnails': {'default': {'url': 'https://yt3.ggpht.com/-4E1iRrrd_c8/AAAAAAAAAAI/AAAAAAAAAAA/cJeykUlKy8s/s88-c-k-no-mo-rj-c0xffffff/photo.jpg'}, 'medium': {'url': 'https://yt3.ggpht.com/-4E1iRrrd_c8/AAAAAAAAAAI/AAAAAAAAAAA/cJeykUlKy8s/s240-c-k-no-mo-rj-c0xffffff/photo.jpg'}, 'high': {'url': 'https://yt3.ggpht.com/-4E1iRrrd_c8/AAAAAAAAAAI/AAAAAAAAAAA/cJeykUlKy8s/s240-c-k-no-mo-rj-c0xffffff/photo.jpg'}}}, 'statistics': {'videoCount': '354', 'commentCount': '0', 'hiddenSubscriberCount': False, 'viewCount': '1417504', 'subscriberCount': '12178'}, 'kind': 'youtube#channel', 'id': 'UCipITl9sF0qOhCyx9CyoPGA', 'etag': '"m2yskBQFythfE4irbTIeOgYYfBU/dy7xO_v59s1GVGj_ZJRXB_3rico"', 'contentDetails': {'relatedPlaylists': {'watchHistory': 'HL', 'uploads': 'UUipITl9sF0qOhCyx9CyoPGA', 'favorites': 'FLipITl9sF0qOhCyx9CyoPGA', 'watchLater': 'WL', 'likes': 'LLipITl9sF0qOhCyx9CyoPGA'}}}], 'kind': 'youtube#channelListResponse', 'etag': '"m2yskBQFythfE4irbTIeOgYYfBU/p-3fTLLWdWeBZO-Q-vqxfEbNIhw"'} 

Dies ist die Funktion?

def channels_list_by_id(service, **kwargs): 
    kwargs = remove_empty_kwargs(**kwargs) # See full sample for function 
    results = service.channels().list(
     **kwargs 
    ).execute() 

def print_results(results): 
    print(results) 
+0

bräuchten wir den Inhalt Ihrer 'Ergebnisse()' Funktion, um zu sehen, zu sehen, was du bist Es ist aber wahrscheinlich, dass Sie nur Ihr Wörterbuch ausdrucken und es nicht aus dem 'results() 'zurückgeben. fxn – wpercy

+0

hinzugefügt den Inhalt –

+2

Wenn Sie eine Funktion mit dem Namen' results_print' verwenden, müssen Sie die Definition hinzufügen die Funktion für Ihr Problem. – n1c9

Antwort

1

Ich glaube, Sie versuchen, dies zu tun:

def get_subscriber_count(results): 
    return results['items'][0]['statistics']['subscriberCount'] 

results = channels_list_by_id(service, **kwargs) 
print("Subscribers:", get_subscribers_count(results)) 

Wenn Sie versuchen, eine anonyme Funktion einer Variablen zugewiesen werden, wie Sie in Sprachen wie Javascript tun können, können Sie dies versuchen:

get_subscribers_count = lambda r: r['items'][0]['statistics']['subscriberCount'] 

In Python ist dies jedoch auf Einzeiler beschränkt.

Wenn results ein String ist, müssen Sie es analysieren, bevor Schlüssel in der Lage, den Zugriff auf:

import json 

def get_subscriber_count(results): 
    parsed_results = json.loads(results) 
    return parsed_results['items'][0]['statistics']['subscriberCount'] 

# or 
get_subscriber_count = lambda r: json.loads(r)['items'][0]['statistics']['subscriberCount'] 

[update]

Ein Problem bei channels_list_by_id es, dass es eine return Aussage fehlt, so dass es gibt None zurück. Im Gegensatz zu vielen anderen Sprachen, ist Python nicht den Wert der letzten Anweisung zurückgeben, müssen Sie ausdrücklich zurück:

def channels_list_by_id(service, **kwargs): 
    kwargs = remove_empty_kwargs(**kwargs) # See full sample for function 
    return service.channels().list(
     **kwargs 
    ).execute() 
+0

Ja, aber das Diktat ist jedes Mal anders, wenn ich den Code ausführe, weil Youtube die Anzahl der Abonnenten aktualisiert. –

+0

Gut das saugt –

+0

@DanielCarlsson: in "das ist zum Kotzen", was ist "das"? –

Verwandte Themen