【发布时间】:2018-09-13 12:51:00
【问题描述】:
OrderedDict能拿到关键位置吗?
类似于list 的index()
test = ['a', 'b', 'c', 'd', 'e']
test.index('b') # return 1
【问题讨论】:
-
Python 3.6 dict 是有序的,应该能够以 O(1) 执行此操作
-
@DavidHeffernan,你能解释一下 O(1) 复杂度如何实现吗?以下所有答案都使用
list.index(或next与生成器表达式)。 -
@jpp 3.6 中引入的 compact dict 具有支持这一点的数据结构。但我无法在评论中解释该数据结构。你需要阅读它。
-
@DavidHeffernan,是的,我已经阅读了结构,但据我所知,O(1) 复杂性仅在 一次性 O (n) 构建映射字典的过程,如
{v: k for k, v in enumerate(d)}。这个映射(据我所知)没有存储在 Python 中可访问的任何地方。 -
@jpp 如果您手头有 Python 字典,我认为这些信息不可用,但不清楚。我认为我的观点更多的是数据结构支持 O(1)
index()如果要实现的话。我可以看到我最初的评论甚至远没有表达出来! :-(
标签: python python-3.x list ordereddictionary