擅长:python、mysql、java
<p>有几件事是不合理的</p>
<pre><code>ls = np.empty
ls =getColA()
</code></pre>
<p><code>np.empty</code>是一个函数。将其赋给<code>ls</code>;然后将<code>getColA()</code>的结果赋给<code>ls</code>。这就抹去了第一个任务。您认为第一个赋值是否将<code>ls</code>变量定义为数组?Python不是这样工作的。变量没有类型。</p>
^{pr2}$
<p>您没有告诉我们<code>getColA()</code>返回什么,但错误表明它是一个数组。1d?二维?</p>
<p>这种字典构建可以使用1d数组(我使用的是PY3)</p>
<pre><code>In [497]: dict(itertools.zip_longest(np.arange(3),np.arange(10,13)))
Out[497]: {0: 10, 1: 11, 2: 12}
</code></pre>
<p>但不是2d</p>
<pre><code>In [498]: dict(itertools.zip_longest(np.arange(6).reshape(2,3),np.ones((2,3))))
...
TypeError: unhashable type: 'numpy.ndarray'
</code></pre>
<p>这是因为2d上的<code>zip</code>返回数组的行,而这些行本身就是数组:</p>
<pre><code>In [499]: list(itertools.zip_longest(np.arange(6).reshape(2,3),np.ones((2,3))
...: ))
Out[499]:
[(array([0, 1, 2]), array([ 1., 1., 1.])),
(array([3, 4, 5]), array([ 1., 1., 1.]))]
</code></pre>
<p>为什么要使用数组作为字典键?</p>