То, что у вас есть, это список диктов.Таким образом, вы должны сначала получить элементы этого списка, прежде чем вы сможете обращаться с ними как с диктовками.
Например, первый URL-адрес - results[0]['url']
.Или, если вы хотите что-то сделать с каждым URL, вы должны сделать 'для результата в результате: dosomething (result [' url ']) `.
Итак, что, если вы хотите получить списоквсе URL-адреса?
urls = []
for result in results:
url = result['url']
results.append(url)
Конечно, вы можете сделать это более компактным, если понимаете понимание списка:
urls = [result['url'] for result in results]
Если вы собираетесь делать многоПри сложном поиске в этой структуре есть два варианта:
Во-первых, вы можете реструктурировать данные в форму, которую проще использовать.Например, если вам нужно много чего сделать, например поискать сенатора из Северной Дакоты, было бы неплохо, если бы вы написали senate['ND']
вместо [result for result in results if result['state'] == 'ND' and result['chamber'] == 'Senate']
.Вы можете сделать это с помощью:
senate = {result['state']: result for result in results if result['chamber'] == 'Senate'}
house = {result['state']: result for result in results if result['chamber'] == 'House'}
Очевидно, что это сложно, и это полезно только в том случае, если экономит вашу сложность в другом месте, многократно.
Есть также (по крайней мере,) три различных мини-языка для поиска структур вложенных списков и диктов с ключевыми путями в виде строк, с подстановочными знаками - jsonpath, dpath и kvc - и все они имеют библиотеки PyPI, которые вы можете искать.У всех них есть некоторая кривая обучения, и они излишни, если вы просто делаете один простой поиск по данным.Но если вы собираетесь проводить много поисков, то тот факт, что вы можете написать каждый как, скажем, urls = search(results, '*.url')
вместо urls = [result['url'] for result in results]
, иногда может окупиться.