python OrderedDict得到一个关键索引

时间:2018-04-04 04:36:44

标签: python python-3.x list ordereddictionary

OrderedDict可以获得关键位置吗?

list

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

5 个答案:

答案 0 :(得分:4)

只需一行计划。 如:

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

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

f = lambda ordered_dict, key: list(ordered_dict).index(key)
祝你好运。

答案 1 :(得分:1)

你可以用两种方式写出来:

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

对于小型唱片,第一个会快一点,但速度要慢得多,而且浪费了很多空间。 (当然,大多数情况下,OrderedDict都非常小。)

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

答案 2 :(得分:1)

保持简单。

from collections import OrderedDict

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

答案 3 :(得分:0)

如果您将密钥作为列表,则可以索引如下:

代码:

list(x).index('b')

测试代码:

from collections import OrderedDict

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

结果:

1

答案 4 :(得分:0)

每次您搜索职位时,接受的答案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