有没有一种方法可以使用 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)
预期的查找时间。
假设我有这个 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)
预期的查找时间。