【发布时间】:2016-08-07 17:52:06
【问题描述】:
我有一组非常大(200k+)的键/值对,我需要检索非常大(有时是全部)的值。最明显的方法是使用这样的字典
values = {lookup.get(key) for key in key_set}
这在我的代码中变得非常耗时,我想知道是否有更快的方法来使用 NumPy 数组来实现它。我一直在尝试使用具有两列和 n 行的数组,这样对于任何单个键:
value = lookup_array[lookup_array[:,0] == key, 1]
但我不确定如何在不进行昂贵的迭代的情况下将其扩展到许多键。我看过:
values = lookup_array[np.in1d(lookup_array[:,0], key_set), 1]
但这似乎也很耗时。
有没有其他方法可以在不迭代的情况下快速查找大量不连续的值?
【问题讨论】:
-
在第一个示例中查找是字典
-
不应该是
lookup_array[:,0]吗?另外,key_set是否包含unique键? -
是的,键是整数。
-
key_set是否包含不在lookup_array中的值? -
不,key_set 是lookup_array[:,0] 的子集。不,每个键只有一个值。
标签: python arrays numpy dictionary iteration