在Python中实现系列元素的二维数组的最佳方法

在Python中实现系列元素的二维数组的最佳方法,python,list,dictionary,Python,List,Dictionary,我有一个动态集合,由数百个对象的顺序组成的数据系列组成,其中每个系列都必须被标识(用整数),并且由元素组成,也用整数标识。每个元素都是一个自定义类 我使用defaultdict创建了一个嵌套(2-D)字典。这使我能够通过键/ID快速访问一个系列和单个元素。我需要能够添加和删除元素和整个系列,因此dict对我很有用。还要注意,由于添加/删除,ID不必是连续的。ID很重要,因为它们是唯一的,并通过我的应用程序在其他地方引用 例如,考虑以下键/ ID的数据集, [1][1,2,3,4,5] [2][1

我有一个动态集合,由数百个对象的顺序组成的数据系列组成,其中每个系列都必须被标识(用整数),并且由元素组成,也用整数标识。每个元素都是一个自定义类

我使用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):

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


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

我认为您需要的是一个带有数组值的dict:

dict = {1:[...],3:[...], ....}
然后,您可以根据需要对阵列进行操作。如果数组值是连续整数 只需使用:

dict[key].append(vals)
dict[key].sort()
不要担心速度,除非你发现这是个问题。过早优化 是万恶之源


事实上,如果你想真正提高效率,在必要时甚至都不要对dict vals进行排序。

为什么不能插入新值,然后对列表进行排序<代码>[1]。推送(新建),然后推送
[1]。排序()
?@tkone我现在没有使用列表,我使用的是嵌套字典。根据您的代码,您使用的是列表。列表是在Python中用
[]
符号定义的。字典是
{}
。此外,如果这些应该是dict,那么您的dict只有键,没有值。@tkone我只是在解释中显示用于索引数据的ID/键,而不是实际的代码语法,因此括号[]。@BrandonJ:那么,
[1,2,3,4,5]
是实际索引,还是该系列的所有可能索引?实际上,
[1][1,2,3,4,5]
的哪个部分是关键,哪个是ID?我认为这对我来说是最好的解决方案。以嵌套列表作为值的字典。谢谢
dict[key].append(vals)
dict[key].sort()