有没有一种方法可以使用 python 中的 2 个键有效地搜索值?

Is there a way to efficiently search for a value using 2 keys in python?

假设我有这个 table,其中有 3 列,如下所示。 我可以制作一个值列表并简单地遍历每一行,但如果有大量数据,这对我的新手来说似乎效率低下,而且如果应用于大型项目,它似乎无法扩展:

array = [
    ['a', 'x', 100],
    ['a', 'y', 200],
    ['a', 'z', 300],
    ['b', 'x', 150],
    ['b', 'y', 1000],
    ['b', 'z', 50],
    ['c', 'x', 790],
    ['c', 'y', 456],
    ['c', 'z', 500]
]

我在考虑使用嵌套字典,它看起来更高效,但不完全可扩展:

table = {
    'a': {'x': '100', 'y': '200', 'z': '300'},
    'b': {'x': '150', 'y': '1000', 'z': '50'},
    'c': {'x': '790', 'y': '456', 'z': '500'}
}

是否有更有效的方法来搜索这些值?就像基于两列在 SQL 上建立索引。

您可以使用键为二元组且值为整数的字典:

{(fst, snd): thrd for fst, snd, thrd in array}

这输出:

{
 ('a', 'x'): 100,
 ('a', 'y'): 200,
 ('a', 'z'): 300,
 ('b', 'x'): 150,
 ('b', 'y'): 1000,
 ('b', 'z'): 50,
 ('c', 'x'): 790,
 ('c', 'y'): 456,
 ('c', 'z'): 500
}

这允许 O(1) 预期的查找时间。