erfolgreich in eine Python-Liste angehängt
-
11-09-2019 - |
Frage
Das mag wie die Welten einfachste Python Frage scheint ... Aber ich werde ihm zu erklären, es gehen geben.
Im Grunde genommen habe ich durch die Seiten von json Ergebnisse aus einer Abfrage-Schleife.
der Standard Ergebnis ist dies
{'result': [{result 1}, {result 2}], 'next_page': '2'}
Ich brauche die Schleife Schleife fortzusetzen, die Liste im Ergebnis Schlüssel zu einem var anhängen, die später zugegriffen werden können und gezählt, um die Menge der Ergebnisse innerhalb der Liste. Allerdings brauche ich es nur eine Schleife während next_page wie nach einer Weile existiert, wenn es keine weiteren Seiten der next_page Schlüssel sind aus der dict gesunken.
zur Zeit habe ich diese
next_page = True
while next_page == True:
try:
next_page_result = get_results['next_page'] # this gets the next page
next_url = urllib2.urlopen("http://search.twitter.com/search.json" + next_page_result)# this opens the next page
json_loop = simplejson.load(next_url) # this puts the results into json
new_result = result.append(json_loop['results']) # this grabs the result and "should" put it into the list
except KeyError:
next_page = False
result_count = len(new_result)
Lösung
Alternate (Reiniger) Ansatz, so dass eine große Liste:
results = []
res = { "next_page": "magic_token_to_get_first_page" }
while "next_page" in res:
fp = urllib2.urlopen("http://search.twitter.com/search.json" + res["next_page"])
res = simplejson.load(fp)
fp.close()
results.extend(res["results"])
Andere Tipps
new_result = result.append(json_loop['results'])
Die Liste wird als Nebeneffekt des Methodenaufruf angehängt.
append()
tatsächlich gibt None
, so new_result
ist nun ein Verweis auf None
.
Sie verwenden möchten
result.append(json_loop['results']) # this grabs the result and "should" put it into the list
new_result = result
, wenn Sie darauf bestehen, es auf diese Weise zu tun. Als Bastien sagte result.append(whatever) == None
AFAICS, Sie brauchen nicht die Variable new_result überhaupt.
result_count = len(result)
gibt Ihnen die Antwort, die Sie benötigen.
Sie nicht in eine dict..you anhängen können in Ihrem dict in Ihrer Liste anzuhängen, sollten Sie wie folgt tun
result['result'].append(json_loop['results'])
Wenn Sie überprüfen wollen, ob es keine nächste Seite Wert im Ergebnis dict ist, und Sie den Schlüssel aus dem dict zu löschen, wie dies zu tun
if not result['next_page']:
del result['next_page']