扁平字典和嵌套字典的速度性能差异

2024-06-26 01:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python开发了一个程序,在扁平字典中组织数据。 随着dict大小的增加,程序会因为密集的键搜索而变得更慢。 看看嵌套字典的结构,在我看来,“分层”方法可能会加快键的搜索速度。 我错了吗?在

嵌套的dict是:

nested_dict = { 'dictA': {'key_1': 'value_1', 'key_2': 'value_2'},
                'dictB': {'key_3': 'value_3', 'key_4': 'value_4', 'key_5': 'value_5'},
                ...
                'dictZ': {'key_m': 'value_m', 'key_n': 'value_n'}}

比扁平的字典还快:

^{pr2}$

编辑:添加了一些代码示例

下面是我通常使用的一段代码。程序相当大,因此没有特定的代码需要评估

作业:

dictionary['key_1'] = dictionary2['key_a']
dictionary['key_3'] = dictionary2['key_a']*dictionary['key_4']

条件语句:

if( (0 == dictionary['key_1']) and
    (dictionary2['key_b'] >= dictionary['key_3']) ):

Tags: 数据方法key代码程序dictionary字典value
2条回答

Looking at nested dictionaries structure, seems to me that a "hierarchical" approach may speed up the search of the keys. Am I wrong?

是:-)

平面dict空间无论大小都有O(1)查找。这就是哈希表作为数据结构如此吸引人的原因。在

添加层次结构只是添加额外的哈希步骤和查找步骤。在

在某些上下文中,容器的大小确实会带来一些缓存局部性的好处,但是在Python中,容器对分散在内存中的对象有引用,因此紧凑性没有多大帮助。在

此外,Python是一种解释语言,因此添加额外的查找层也需要更多的操作码计算。这将淹没紧凑性可能带来的任何好处。在

平面字典比嵌套字典快。为了补充这个答案,下面是我如何构建我的字典。在

如果数据的结构可以通过键(复合键)的组合来标识一个值,则使用元组作为字典键。在

companies = {}
companies[('Canada', 'ABC')] = 'Association des Bucherons du Canada'
companies[('Usa', 'ABC')] = 'American Broadcasting Company'
companies[('Usa', 'AAPL')] = 'Apple'

>>> companies.keys()
dict_keys([('Canada', 'ABC'), ('Usa', 'ABC'), ('Usa', 'AAPL')])

你的字典会写得又快又快。在

相关问题 更多 >