擅长:python、mysql、java
<p>我不相信Python中存在更高效的数据结构。使用常规索引操作符简单地检索列表应该是一个非常快速的操作,即使两个级别的字典都非常大。你知道吗</p>
<pre><code>nestedDict = {"Dict1":{"Dict2": ['UNIOUE LIST'] }}
uniqueList = nestedDict["Dict1"]["Dict2"]
</code></pre>
<p>我唯一想提高性能的方法是尝试将数据结构扁平化为一个包含元组作为键的字典。这将比嵌套方法占用更多的内存,因为顶级字典中的键将针对第二级字典中的每个条目进行复制,但每次查找只会计算一次哈希函数。但实际上,这种方法比嵌套方法慢:</p>
<pre><code>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))
</code></pre>
<p>输出:</p>
<pre><code>2.0440238649971434
2.302736301004188
</code></pre>