有一张由字典组成的表格,一个例子:
testList
[
{'el1':{'x': 0, 'y': 0, 'z': 0}},
{'el2':{'x': 1, 'y': 1, 'z': 1}},
{'el3':{'x': 2, 'y': 2, 'z': 3}}
]
这样一张表中有 400k+ 个字典。我们需要一种快速获取工作表元素索引号的方法。例如:您需要其中为 的工作表元素的索引'x'
号0
。我首先想到的是“半除法”类型的递归搜索,现在我不记得这个算法到底叫什么了。其实这个方法是实施的,结果也是安排的。但我想知道我想出了一辆自行车。也许 中有一个现成的功能list
,可以让你快速搜索字典列表中的索引,或者你甚至可以使用“切片”并且速度方面的结果是一样的?
搜索,或者更确切地说是过滤,使用切片在 pandas 中实现。对于像您这样大的数据集,尝试使用 pandas 可能是有意义的。尽管此解决方案需要额外的内存:
如果这一行被替换为:
我们得到以下结果:
如果这个结构体的内容没有变化,有很多次调用它,而且
x
没有重复,那么你可以预先建立一个新的字典,键等于值x
,并立即从中取值。同时,不会花费空间来存储元素本身——对象的引用,而不是对象的副本,进入字典。所以附加字典中的位置将只用在键和链接上。结论:
如果
x
它们可以重复,那么代码会稍微复杂一些——您需要存储的不是元素,而是元素列表,但无论如何字典仍然是访问时间最快的解决方案O(1)
。建立一个索引——一个映射一个值和一个索引列表的字典。建立一次索引并多次使用它是有意义的。与原来的列表相比,不会占用太多内存: