将字典值转换为按另一个数组排序的数组



我有字典

mydict = {'jon': 12, 'alex': 17, 'jane': 13}

我想创建一个包含12, 17, 13值的np.array,但按另一个数组排序

sortby = np.array(['jon', 'jane', 'alex'])

这应该产生输出为

sorted_array = np.array([12, 13, 17])

有什么方法比循环遍历sortby数组更有效,如下所示?

sorted_array = []
for vals in sortby:
     sorted_array.append(mydict[vals])
return np.array(sorted_array)

使用列表理解,

In [100]: np.array([mydict[i] for i in sortby])
Out[100]: array([12, 13, 17])

编辑:

处决时间,为穆罕默德和摩西的讨论明确

In [119]: def test_loop():
    sorted_array = []
    for vals in sortby:
        sorted_array.append(mydict[vals])
    return np.array(sorted_array)
   .....: 
In [120]: def test_list_compres():
    return np.array([mydict[i] for i in sortby])
   .....: 
In [121]: %timeit test_list_compres
10000000 loops, best of 3: 20 ns per loop
In [122]: %timeit test_loop
10000000 loops, best of 3: 21.3 ns per loop
In [123]: %timeit test_list_compres
10000000 loops, best of 3: 20.1 ns per loop
In [124]: %timeit test_loop
10000000 loops, best of 3: 21.9 ns per loop

这是一个微小的差异,但它将产生重大变化,巨大的条目。

最新更新