aggiungendo con successo a una lista di pitone
-
11-09-2019 - |
Domanda
Questo può sembrare mondi più semplici domanda pitone ... ma ho intenzione di dare un andare di spiegarlo.
In pratica devo scorrere le pagine dei risultati JSON da una query.
il risultato standard è questo
{'result': [{result 1}, {result 2}], 'next_page': '2'}
Ho bisogno del ciclo di continuare a loop, aggiungendo la lista nella chiave risultato a un var che può essere successivamente accedere e contò la quantità di risultati all'interno della lista. Tuttavia mi impongono di ciclo solo durante next_page esiste come dopo un po 'quando non ci sono più pagine la chiave next_page viene eliminato dal dict.
Al momento ho questo
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)
Soluzione
Alternate (pulito) approccio, facendo una lunga lista:
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"])
Altri suggerimenti
new_result = result.append(json_loop['results'])
La lista è aggiunto come effetto collaterale della chiamata al metodo.
append()
ritorna in realtà None
, quindi new_result
è ormai un punto di riferimento per None
.
Si desidera utilizzare
result.append(json_loop['results']) # this grabs the result and "should" put it into the list
new_result = result
se ti ostini a farlo in questo modo. Come ha detto Bastien, result.append(whatever) == None
AFAICS, non è necessario il new_result variabili a tutti.
result_count = len(result)
vi darà la risposta che cercavi.
Non è possibile aggiungere in un dict..you possibile aggiungere nella vostra lista all'interno del vostro dict, si dovrebbe fare in questo modo
result['result'].append(json_loop['results'])
Se si vuole verificare se non v'è alcun valore successivo pagina nel dict risultato, e si desidera eliminare la chiave dal dict, basta fare come questo
if not result['next_page']:
del result['next_page']