успешное добавление в список python
-
11-09-2019 - |
Вопрос
Это может показаться самым простым в мире вопросом python...Но я собираюсь попытаться объяснить это.
По сути, мне приходится перебирать страницы результатов запроса в формате json.
стандартный результат таков
{'result': [{result 1}, {result 2}], 'next_page': '2'}
Мне нужно, чтобы цикл продолжал выполняться, добавляя список в ключе результата к переменной, к которой позже можно получить доступ и подсчитать количество результатов в списке.Однако я требую, чтобы он выполнял цикл только пока существует next_page, так как через некоторое время, когда страниц больше нет, ключ next_page удаляется из dict.
в настоящее время у меня есть это
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)
Решение
Альтернативный (более чистый) подход, составление одного большого списка:
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"])
Другие советы
new_result = result.append(json_loop['results'])
Список добавляется как побочный эффект вызова метода.append()
на самом деле возвращает None
, так что new_result
теперь это ссылка на None
.
Вы хотите использовать
result.append(json_loop['results']) # this grabs the result and "should" put it into the list
new_result = result
если вы настаиваете на том, чтобы делать это именно так.Как сказал Бастьен, result.append(whatever) == None
AFAICS, вам вообще не нужна переменная new_result .
result_count = len(result)
даст вам ответ, который вам нужен.
вы не можете добавить в dict..вы можете добавить в свой список внутри своего dict, вы должны сделать вот так
result['result'].append(json_loop['results'])
если вы хотите проверить, нет ли значения next page в вашем результирующем dict, и вы хотите удалить ключ из dict, просто сделайте вот так
if not result['next_page']:
del result['next_page']