OrderedDict
可以获得关键位置吗?
与list
index()
类似
test = ['a', 'b', 'c', 'd', 'e']
test.index('b') # return 1
答案 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