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)
È stato utile?

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']
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top