Python 在字典中返回特定列表的最快方法是什么?
我在字典里有一个列表。数据集非常大。如果给我一个特定于键dict对的列表,我如何最快地返回嵌套在两个字典中的列表Python 在字典中返回特定列表的最快方法是什么?,python,algorithm,sorting,data-structures,Python,Algorithm,Sorting,Data Structures,我在字典里有一个列表。数据集非常大。如果给我一个特定于键dict对的列表,我如何最快地返回嵌套在两个字典中的列表 {“Dict1”:{“Dict2”:['UNIOUE LIST']} 为了提高效率,是否有其他数据结构可供使用?在嵌套字典中访问列表的最快方法是 d = {"Dict1":{"Dict2": ['UNIOUE LIST'] }} print(d["Dict1"]["Dict2"]) 输出: ['UNIOUE LIST'] 但如果对嵌套字典中的列表执行迭代。因此,您可以使用
{“Dict1”:{“Dict2”:['UNIOUE LIST']}
为了提高效率,是否有其他数据结构可供使用?在嵌套字典中访问列表的最快方法是
d = {"Dict1":{"Dict2": ['UNIOUE LIST'] }}
print(d["Dict1"]["Dict2"])
输出:
['UNIOUE LIST']
但如果对嵌套字典中的列表执行迭代。因此,您可以使用以下代码作为示例
d = {"a":{"b": ['1','2','3','4'] }}
for i in d["a"]["b"]:
print(i)
输出:
1
2
3
4
我不相信Python中存在更高效的数据结构。使用常规索引操作符简单地检索列表应该是一个非常快速的操作,即使两个级别的字典都非常大
nestedDict = {"Dict1":{"Dict2": ['UNIOUE LIST'] }}
uniqueList = nestedDict["Dict1"]["Dict2"]
我提高性能的唯一想法是尝试将数据结构扁平化为一个包含元组的字典。这将比嵌套方法占用更多内存,因为顶级字典中的键将针对第二级字典中的每个条目进行复制,但对于每次查找,它只计算一次哈希函数。但实际上,这种方法比嵌套方法慢:
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))
输出:
2.0440238649971434
2.302736301004188
由于python的哈希表,如果你知道两个dict的键,应该会非常快。你的键是一个字典?你能在代码中显示它吗?@Wonka是的,键是一个字典。这是一个嵌套字典,最终值为列表。@Alex,这没有意义。尝试将字典用作键会导致
TypeError:unhabable type:'dict'
。在您的示例中,值中包含内部字典。字符串“Dict1”
是其关联键。