我知道字典在Python 3.6+中是按插入顺序排序的,这是在3.6中作为实现细节,在3.7+中正式成为规范。
既然它们是有序的,那么似乎没有任何方法可以通过插入顺序检索字典的第i个项目。可用的唯一解决方案似乎具有O(n)的复杂度,要么:
1.通过O(n)的过程将其转换为列表,然后使用list.__getitem__。 2.在循环中枚举字典项,并在达到所需索引时返回该值。同样,时间复杂度为O(n)。
由于从列表获取项目具有O(1)的复杂度,是否有办法使用字典实现相同的复杂度?使用常规dict或collections.OrderedDict都可以。
如果不可能,是否有结构上的原因阻止了这种方法,还是这只是一个尚未考虑/实施的功能?
既然它们是有序的,那么似乎没有任何方法可以通过插入顺序检索字典的第i个项目。可用的唯一解决方案似乎具有O(n)的复杂度,要么:
1.通过O(n)的过程将其转换为列表,然后使用list.__getitem__。 2.在循环中枚举字典项,并在达到所需索引时返回该值。同样,时间复杂度为O(n)。
由于从列表获取项目具有O(1)的复杂度,是否有办法使用字典实现相同的复杂度?使用常规dict或collections.OrderedDict都可以。
如果不可能,是否有结构上的原因阻止了这种方法,还是这只是一个尚未考虑/实施的功能?
dk_entries
。没有链接列表。删除的条目将被替换为虚拟条目,并且在添加新条目时,可能会调整数组的大小(删除虚拟条目)。 - Michael Butscher