擅长:python、mysql、java
<p>你所拥有的是一份口述清单。所以你必须先得到列表中的元素,然后才能把它们当作dicts来对待。在</p>
<p>例如,第一个URL是<code>results[0]['url']</code>。或者,如果你想对每个URL都做些什么,你必须做'forresult-in-results:dosomething(result['URL'])`。在</p>
<p>那么,如果你想得到所有网址的列表呢?在</p>
<pre><code>urls = []
for result in results:
url = result['url']
results.append(url)
</code></pre>
<p>当然,如果您理解列表的含义,则可以使其更紧凑:</p>
^{pr2}$
<hr/>
如果你要在这个结构上做很多复杂的查找,有两个选项可以考虑。在</p>
<hr/>
<p>首先,可以将数据重新构造为更易于使用的形式。例如,如果您需要做很多事情,比如查找来自北达科他州的参议员,那么最好写<code>senate['ND']</code>,而不是{<cd3>}。您可以使用:</p>
<pre><code>senate = {result['state']: result for result in results if result['chamber'] == 'Senate'}
house = {result['state']: result for result in results if result['chamber'] == 'House'}
</code></pre>
<p>显然,这很复杂,而且只有在其他地方节省更多的复杂性时才有用。在</p>
<hr/>
<p>还有(至少)三种不同的迷你语言可以搜索嵌套的list和dict结构,键路径作为字符串,使用通配符jsonpath、dpath和kvc,它们都有PyPI上的库,您可以查找它们。它们都有一个学习曲线,如果你只是在数据上做一个简单的搜索,那么它们就有点过头了。但是如果你要做大量的搜索,你可以把每一个都写成<code>urls = search(results, '*.url')</code>而不是{<cd5>}这一事实有时会有回报。在</p>