nestedDict = {i: {j: ['UNIQUE LIST'] for j in range(1000)} for i in range(1000)}
flatDict = {(i, j): ['UNIQUE LIST'] for i in range(1000) for j in range(1000)}
import random
def accessNested():
i = random.randrange(1000)
j = random.randrange(1000)
return nestedDict[i][j]
def accessFlat():
i = random.randrange(1000)
j = random.randrange(1000)
return nestedDict[(i,j)]
import timeit
print(timeit.timeit(accessNested))
print(timeit.timeit(accessFlat))
我不相信Python中存在更高效的数据结构。使用常规索引操作符简单地检索列表应该是一个非常快速的操作,即使两个级别的字典都非常大。你知道吗
我唯一想提高性能的方法是尝试将数据结构扁平化为一个包含元组作为键的字典。这将比嵌套方法占用更多的内存,因为顶级字典中的键将针对第二级字典中的每个条目进行复制,但每次查找只会计算一次哈希函数。但实际上,这种方法比嵌套方法慢:
输出:
在嵌套字典中访问列表的最快方法是
输出:
但是如果对嵌套字典中的列表执行迭代。所以你可以用下面的代码作为例子
输出:
相关问题 更多 >
编程相关推荐