通过一个键遍历多种数据类型的高效结构

时间:2018-02-14 15:12:38

标签: python algorithm memory-management data-structures iteration

我使用的算法使用一个键来查找数据。在我的最新实现中,数据(每个键)是1.)一组值,2)第二组值,3)元组(或其他一些结构),其中包含几个数值。

因此,每个条目包含1,2和3.但是,对于任何给定的密钥,可能有许多条目。也许数百万(或者可能只是一个)。

算法循环,每次循环后,所有数据都需要更新和更改。一切。因此,根据实现情况,我可能需要重新创建大多数结构(事实证明,重新使用旧结构非常困难。)

在我的算法的最后一个版本中,我使用了元组列表的字典。但在那个版本中,我没有使用实际集合,而是使用序列来表示集合。所以每个列表条目只是一个元组。

我正在考虑邻接列表的字典,其中每个子列表是:set1,set2,值的元组。但我担心这不是很有效,我担心一遍又一遍地重建这些结构的开销。

我也在考虑记录类:https://pypi.python.org/pypi/recordclass 但是,我没有经验。这是一个很好的契合吗?使用记录类列表字典是否合理?每个记录类都保存我的值和我的两组?

还是有其他我没想到的结构?谢谢你的任何建议。我知道如果不确切知道项目是什么就很难,但只是假设使用(set1,set2,value of tuple of values)的许多实例的一般计划 - 每个都对应一些键,是必要的。

编辑 - 使用更多信息进行更新:

给定的字典键将是一个数字,该值将是某种与该数字对应的集合,具有以下字段:2个intbitsets和2个数字值(其中一个与键匹配)。 / p>

示例(请注意,我不一定要使用列表列表

defaultdict(<type 'list'>, {64: [[set([1,2,3,7,8,9]), set([5, 7, 4]), (64, 
13)], [set([7,9,11,12,18,21]), set([35,19,8]), (8, 64)]], 121: 
[[set([9,8,7,5,6,2]), set([1,2,3]), (121, 120)]] }

我的词典(或任何替代实现)可能有数千个密钥,每个密钥可以具有与之匹配的任何数量的(set1,set2,number1,number2)。我将需要进行许多迭代来访问这些字段,并且在每次迭代之后,值可能会发生变化,并且可能会有更多或更少的值。

可能的变化是创建一个来自各种集合的新字段,然后根据该联合的结果更改2个数字。可以有任意数量的工会。此外,在每轮更改结束时,我不再需要任何旧条目。

0 个答案:

没有答案