python OrderedDict 得到一个关键索引

python OrderedDict get a key index of

能否OrderedDict获得关键位置?

类似于 listindex()

test = ['a', 'b', 'c', 'd', 'e']
test.index('b') # return 1

如果你把键作为一个列表,你可以这样索引:

代码:

list(x).index('b')

测试代码:

from collections import OrderedDict

x = OrderedDict(a=1, b=2)
print(list(x).index('b'))

结果:

1

有两种写法:

  • list(x).index('b')
  • next(i for i, k in enumerate(x) if k=='b')

第一个对于小的字典会快一点,但对于大的字典会慢很多,并且浪费很多 space。 (当然大多数时候,OrderedDict都非常小。)

两个版本都适用于any iterable;这里 OrderedDict 没什么特别的。

保持简单。

from collections import OrderedDict

x = OrderedDict('test1'='a', 'test2'='b')
print(list(x.keys().index('test1'))

只有一行程序。 如:

print(list(your_ordered_dict).index('your_key'))

也许你可以使用lambda,像这样一行程序:

f = lambda ordered_dict, key: list(ordered_dict).index(key)

祝你好运。

每次您搜索该职位时,接受的答案 list(x).index('b') 将是 O(N)

相反,您可以创建一个映射键 -> 位置,一旦构建映射,该位置将是 O(1)

ordered_dict = OrderedDict(a='', b='')

key_to_pos = {k: pos for pos, k in enumerate(ordered_dict)}
assert key_to_pos['b'] == 1