<p><strong>代码中发现的基本问题</strong></p>
<ol>
<li><p>实际上,您需要使用<code>:</code>来标记<code>if</code>和{<cd3>}语句的结尾,如下所示</p></li>
<li><p>不要使用任何内置名称作为变量名。在这种情况下,<code>list</code>。</p></li>
<li><p>要从字典中获取值,只需要使用<code>["key"]</code>方法来获取它。点符号不起作用。</p></li>
</ol>
<hr/>
<p>所以你的固定代码应该是这样的</p>
<pre><code>result = [] # list is a built-in name. Don't use that
for item in categories: # : at the end
if item["hasCategory"]: # : at the end
result.push(item["Id"])
</code></pre>
<p>除此之外,检查变量是否真实的python方法是</p>
^{pr2}$
<p>所以我们不检查</p>
<pre><code>if item["hasCategory"] == True:
</code></pre>
<p>或者</p>
<pre><code>if item["hasCategory"] is True: # Never use `is` to compare values
</code></pre>
<p>引用<a href="https://www.python.org/dev/peps/pep-0008/" rel="noreferrer">PEP-8</a>,Python代码的风格指南</p>
<blockquote>
<p>Don't compare boolean values to <code>True</code> or <code>False</code> using <code>==</code>.</p>
<pre><code>Yes: if greeting:
No: if greeting == True:
Worse: if greeting is True:
</code></pre>
</blockquote>
<hr/>
<p>解决这个问题的最好方法是将<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="noreferrer">list comprehension</a>与过滤条件一起使用,如下所示</p>
<pre><code>>>> [item["Id"] for item in categories if item["hasCategory"]]
[1350, 113563]
</code></pre>
<p>它将根据旧的iterable创建一个新列表,在本例中是<code>categories</code>。在</p>