<p>来自<code>json.load</code>的返回是一个字典,您只对其中的一个条目感兴趣,由<code>'killRelated'</code>键控。现在,针对每个字典条目的<em>“值”</em>是列表,因此这就是您需要迭代的内容。这样一个列表的每个元素都是一个字典,你可以通过一个键再次访问它</p>
<p>因此,您的代码可以是:</p>
<pre class="lang-py prettyprint-override"><code>with open(filename) as json_filez:
dataz = json.load(json_filez)
for kr in dataz['killRelated']: # iterate through the list under the top-level keyword
print (kr["SteamID"])
</code></pre>
<p>现在,在示例数据中,<code>dataz['killRelated']</code>列表中只有一个条目,因此您只能打印该条目。但总的来说,你应该期望有多个条目——并且考虑到没有条目的可能性。您可以通过try/except通过检查密钥存在来处理该问题;这是后者:</p>
<pre class="lang-py prettyprint-override"><code>with open(filename) as json_filez:
dataz = json.load(json_filez)
if 'killRelated' in dataz: # check for the top keyword
for kr in dataz['killRelated']: # iterate through the list under this keyword
if 'steamID' in kr: # check for the next level keyword
print (kr["SteamID"]) # report it
</code></pre>
<p>您得到了三行输出,因为您的外循环在<code>dataz</code>中的所有关键字条目上进行了迭代(尽管没有检查它们),然后在其中的每一次也在<code>dataz['killRelated']</code>列表上进行了迭代。添加<code>break</code>只会停止该内部循环,对于您拥有的特定数据,该内部循环是多余的,因为它只会打印一个条目</p>