<p>以下是代码的更正版本:</p>
<pre><code>length = {}
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for i, x in enumerate(class_two):
length[x] = class_one[i]
print(length)
</code></pre>
<p>您的版本存在以下问题:</p>
<ul>
<li>初始化<code>length dict</code>(您使用的<code>[]</code>是<code>list</code>的;使用<code>{}</code>。)</li>
<li>将值赋给<code>dict</code>:使用整个<code>list</code>作为<code>key</code>这是错误的,因为<code>list</code>是不可散列的,也不是您想要做的</李>
</ul>
<hr/>
<p>或者更简单更优雅:</p>
<pre><code>length = dict(zip(class_two, class_one))
</code></pre>
<p>在您的情况下,哪种方法是最好的(忽略条件)</p>
<p>它们都是<code>print</code>:<code>{'one' : 1, 'two' : 2, 'three' : 3}</code></p>
<hr/>
<p>最后,你可以有<em>听写理解</em>版本,它是这样的:</p>
<pre><code>length = {k: v for k, v in zip(class_two, class_one)}
</code></pre>
<p>在其他变化中,我们可以想到。请注意,对于您的案例来说,这是一个<strong>过度杀伤力</p>
<hr/>
<blockquote>
<p>The conditional</p>
</blockquote>
<p>至于条件去<code>if x < 4:</code>不知道为什么你有,因为现在的例子输入提供它没有意义,但如果你确实需要它,它很容易重新实现</p>
<p>作为这样一个例子,请看以下内容:</p>
<pre><code>length = {k: class_one[i] for i, k in enumerate(class_two) if class_one[i] < 4}
</code></pre>
<p>或更短的:</p>
<pre><code>length = {class_two[i]: v for i, v in enumerate(class_one) if v < 4}
</code></pre>
<p>或者更喜欢(甚至更短):</p>
<pre><code>length = {k: v for k, v in zip(class_two, class_one) if v < 4}
</code></pre>