从列表中的第一个参数中查找第二个参数

时间:2018-03-27 10:20:00

标签: python-3.x

我有以下问题:让L成为i和j在1和N之间的列表((i,j),w_i,j)。假设我们知道这对(i,j)(例如:(5) ,8)),有没有办法只从列表L中找到w_5,8? 注意:如果我使用liste L而不是矩阵w [i] [j],我的代码是先验的,因为它基本上是空的,所以我宁愿不使用这样的矩阵。

提前致谢

1 个答案:

答案 0 :(得分:0)

有很多方法可以存储和查找(稀疏)矩阵的值,我认为这是目标。

选项1

不要尝试尽早优化。根据您希望在矩阵上执行的计算类型,最好建议您只使用numpy array并且不要担心稀疏性。

如果您的矩阵非常大并且确实稀疏,则可以使用scipy的专用稀疏矩阵实现。

选项2

您已经拥有所描述格式的列表L,并且您不想使用上面提到的任何数字包。然后,您可以将L转换为字典以便于查找值:

# example list
L = [((1,2), 456.5), ((5,4), 33.5)]

# convert to dictionary
D = dict(L)
# lookup
v = D[(1,2)] # v is now 456.5
# missing value
v = D[(3,3)] # throws KeyNotFound exception

# convert to dictionary with default value for missing keys
from collections import defaultdict
D = defaultdict(int, L)
# lookup
v = D[(1,2)] # v is now 456.5
# missing value
v = D[(3,3)] # v is now 0