我有一个大文件(大约 1GB),我像这样读入它来创建一个排序列表的字典。我需要对列表进行排序,以便稍后搜索它们。这些将是前置查询(因为其中索引的最大值小于 x)所以我不能使用集合。
A = defaultdict(list)
B = defaultdict(list)
filename = sys.argv[1]
with open(filename) as fin:
lines = list(fin)
for line in lines:
vals=line.split()
vals[2] = int(vals[2])
bisect.insort_left(A[vals[1]],vals[2]]
bisect.insort_left(B[vals[0]],vals[2]]
不幸的是它太慢了。
分析我看到几乎所有的时间都花在了bisect.insort_left
通话上。
有什么办法可以加快这个速度吗?
添加未排序的元素然后再排序是否值得?如果是这样,您如何对列表字典中的所有列表进行排序?