我使用的算法使用一个键来查找数据。在我的最新实现中,数据(每个键)是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个数字。可以有任意数量的工会。此外,在每轮更改结束时,我不再需要任何旧条目。