успешно добавляется в список питонов - PullRequest
0 голосов
/ 01 ноября 2009

Это может показаться самым простым в мире вопросом о питоне ... Но я собираюсь дать ему объяснение.

По сути, мне приходится просматривать страницы результатов json из запроса.

стандартный результат - это

{'result': [{result 1}, {result 2}], 'next_page': '2'}

Мне нужно, чтобы цикл продолжал цикл, добавляя список в ключе результата к переменной, к которой можно впоследствии получить доступ, и посчитал количество результатов в списке. Однако я требую, чтобы он зациклился только тогда, когда следующая_страница существует, так как через некоторое время, когда страниц больше нет, ключ next_page удаляется из условия

В настоящее время у меня есть это

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)

Ответы [ 5 ]

4 голосов
/ 01 ноября 2009

Альтернативный (более чистый) подход, составление одного большого списка:

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"])
2 голосов
/ 01 ноября 2009
new_result = result.append(json_loop['results'])

Список добавляется как побочный эффект вызова метода. append() фактически возвращает None, поэтому new_result теперь является ссылкой на None.

1 голос
/ 01 ноября 2009

Вы хотите использовать

result.append(json_loop['results']) # this grabs the result and "should" put it into the list
new_result = result

если вы настаиваете на этом. Как сказал Бастьен, result.append(whatever) == None

0 голосов
/ 01 ноября 2009

вы не можете добавить в диктовку .. вы можете добавить в свой список внутри своего диктанта, вы должны сделать так

result['result'].append(json_loop['results'])

, если вы хотите проверить, нет ли следующего значения страницы в вашем результате, и вы хотите удалить ключ из условия, просто сделайте это

if not result['next_page']:
    del result['next_page']
0 голосов
/ 01 ноября 2009

AFAICS, вам вообще не нужна переменная new_result.

result_count = len(result)

даст вам необходимый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...