<p>您误解了<code>in</code>的工作原理。<code>in</code>检查字典中是否存在一个键,它不会将<em>索引到字典中。这就是方括号的作用。在</p>
<pre><code>if 'title_jpn' in json_data['gmetadata'][0] is not "":
</code></pre>
<p>上面的行不会像您期望的那样进行计算。应该是的。在</p>
^{pr2}$
<p>这可以进一步简化,因为在python中,空字符串<code>''</code>的值总是<code>False</code>。因此,不要检查字符串是否不为空,只需检查它是否有任何值,如下所示:</p>
<pre><code>if json_data['gmetadata'][0]['title_jpn']:
</code></pre>
<p>如果您试图防止<code>title_jpn</code>可能是可选的并且不总是存在的,那么您需要在If语句中执行两个条件(我认为这正是您最初尝试的):</p>
<pre><code>if 'title_jpn' in json_data['gmetadata'][0] and json_data['gmetadata'][0]['title_jpn']:
</code></pre>
<p>上面的行首先检查<code>title_jpn</code>键是否存在,然后再尝试检查它的值是否为空。使用dictionary <a href="https://www.tutorialspoint.com/python/dictionary_get.htm" rel="nofollow noreferrer">^{<cd7>}</a>方法可以进一步简化这一点,该方法允许您提供一个默认值。在</p>
<pre><code>if json_data['gmetadata'][0].get('title_jpn', None):
</code></pre>
<p>上面的代码将检查<code>title_jpn</code>是否在字典中,如果在字典中,则返回值;如果不在字典中,<code>None</code>作为默认值。由于在python中,<code>None</code>被解释为<code>False</code>,if块将不会运行,这是所需的行为。在</p>
<blockquote>
<p>dict.get(key, default=None)</p>
</blockquote>
<p>但是,由于<code>.get()</code>自动将默认值设置为<code>None</code>,因此您可以简单地执行以下操作。在</p>
<pre><code>if json_data['gmetadata'][0].get('title_jpn'):
</code></pre>