【发布时间】:2019-04-24 20:38:40
【问题描述】:
我用 python 开发了一个程序,在扁平化的字典中组织数据。 随着字典大小的增加,由于密集的键搜索,程序变得更慢。 查看嵌套字典结构,在我看来,“分层”方法可能会加快键的搜索。 我错了吗?
是嵌套的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'}}
比扁平化的字典更快:
dictionary = {'key_1': 'value_1',
'key_2': 'value_2',
...
'key_n': 'value_n'}
编辑:添加了一些代码示例
下面是我一般使用的一段代码。程序很大,所以没有具体的代码要评估
作业:
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']) ):
【问题讨论】:
-
您是如何搜索密钥的?如果您在巢中寻找钥匙,那么公寓会明显更快。
-
你经常做哪些字典操作?添加新键、查找键等。您的字典有多大?数百、数千、数百万项?
-
我正在使用以下语法搜索键:dictionary['key_1']。我在最大的字典中有大约 70 个键。
-
请注意,在嵌套字典的情况下,您必须使用
dictionary['dictA']['key1']格式进行搜索。您将如何使用键跟踪哪些父字典?维护嵌套结构的开销可能不值得。您的数据结构将取决于您如何使用它,在某些情况下,分层字典是有意义的,在某些情况下是扁平化的。 -
70 个键对于人类来说是很大的概念,但对于计算机来说却很小。如果您遇到任何性能问题,这不是由于该 dict 的大小。在您的情况下,嵌套与扁平应该没有任何区别。
标签: python python-3.x performance dictionary