在Python中实现2-D系列元素数组的最佳方法

时间:2012-01-04 18:40:36

标签: python list dictionary

我有一个动态集,包含数百个对象的数据系列,其中每个系列必须通过整数标识并由元素组成,也由整数标识。每个元素都是一个自定义类。

我使用defaultdict创建了一个嵌套(2-D)字典。这使我能够通过键/ ID快速访问系列和单个元素。我需要能够添加和删除元素和整个系列,所以dict很适合我。另请注意,由于添加/删除,ID不必是顺序的。 ID非常重要,因为它们是唯一的,并通过我的应用程序引用到其他地方。

例如,请考虑以下带有键/ ID的数据集

[1][1,2,3,4,5]
[2][1,4,10]
[4][1]

然而,现在我意识到我希望能够在一个系列中插入元素,但字典并不完全支持它。例如,我希望能够为系列1插入3到4之间的新元素,导致它上面的ID(从4,5)增加(到5,6):

[1][1,2,3,4,5] becomes
[1][1,2,3,4(new),5,6]

由于元素是连续序列的一部分,因此顺序很重要。我意识到使用嵌套列表会更容易,因为它支持insert(),但是我会被迫迭代整个二维数组以获得元素索引吗?

在Python中实现此数据结构的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

我认为你想要的是一个带数组值的字典:

dict = {1:[...],3:[...], ....}

然后您可以根据需要对阵列进行操作。如果数组值是连续的int 只需使用:

dict[key].append(vals)
dict[key].sort()

除非你发现它是一个问题,否则不要担心速度。过早优化 是万恶之源。

事实上,如果你想要真正有效率,甚至不必对你的字典进行排序。