python OrderedDict 得到一个关键索引
python OrderedDict get a key index of
能否OrderedDict
获得关键位置?
类似于 list
或 index()
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
能否OrderedDict
获得关键位置?
类似于 list
或 index()
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