擅长:python、mysql、java
<p>这里有两种方法-</p>
<pre><code>def lookup_dict_app1(vector_dict, a):
k = np.array(list(vector_dict.keys()))
v = np.array(list(vector_dict.values()))
sidx = k.argsort()
return v[sidx[np.searchsorted(k,a,sorter=sidx)]].tolist()
def lookup_dict_app2(vector_dict, a):
k = np.array(list(vector_dict.keys()))
v = vector_dict.values()
sidx = k.argsort()
indx = sidx[np.searchsorted(k,a,sorter=sidx)]
out = [v[i] for i in indx]
return out
</code></pre>
<p>如果使用<code>vector_dict.keys()</code>获得的密钥已经排序,请跳过<code>argsort()</code>并使用<code>sidx</code>进行索引。或者,我们可以做一个简单的检查,得到修改后的版本,比如-</p>
^{pr2}$
<p>样本运行-</p>
<pre><code>In [166]: vector_dict = {1: 'One', 2: 'Two', 3: 'Three', 0:'Zero'}
In [167]: a = np.array([1,2,3,2,3,1])
In [168]: lookup_dict_app1(vector_dict, a)
Out[168]: ['One', 'Two', 'Three', 'Two', 'Three', 'One']
In [169]: lookup_dict_app2(vector_dict, a)
Out[169]: ['One', 'Two', 'Three', 'Two', 'Three', 'One']
</code></pre>