擅长:python、mysql、java
<p>乍一看,这似乎是个问题:</p>
<pre><code>if val not in missing_indicators
</code></pre>
<p>当您在<code>set</code>上使用<code>in</code>时,它将检查您询问的值是否在<code>set</code>项中。要成为Python中<code>dict</code>的键或<code>set</code>的成员,您使用的值必须是<em>可哈希</em>。您可以通过对Python中的值运行<code>hash</code>来检查该值是否可哈希:</p>
<pre><code>>>> hash(1)
1
>>> hash("hello")
7917781502247088526
>>> hash({"1":"2"})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
</code></pre>
<p>在您的代码片段中,看起来<code>val</code>是一个<code>dict</code>,您询问Python这个<code>val</code>是否是^{<cd2>中存在的<em>值之一。作为响应,Python尝试<code>hash</code>{<cd7>},但失败了</p>
<p>您必须克服的障碍是,您的外部<code>dict</code>中的一些</em>值本身就是<code>dict</code>,而其他值看起来像<code>list</code>、<code>str</code>或<code>int</code>。在每种情况下,您需要不同的策略:检查<code>val</code>是什么类型的东西,然后相应地采取行动</p>