from __future__ import print_function
from collections import OrderedDict
from itertools import dropwhile
d = OrderedDict(zip(['a', 'b', 'c', 'd'], range(4)))
for k, v in dropwhile(lambda x: x[0] != 'b', d.items()):
print(k, v)
输出:
^{pr2}$
Python2,避免使用.items()创建键值列表:
for k, v in dropwhile(lambda x: x[0] != 'b', d.iteritems()):
print(k, v)
定时
%timeit
for each in d.items()[d.keys().index('b'):]:
pass
The slowest run took 5.18 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 3.27 µs per loop
%%timeit
for each in islice(d.iteritems(), d.keys().index('b'), None):
pass
The slowest run took 5.23 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 3.05 µs per loop
%%timeit
for k, v in dropwhile(lambda x: x[0] != 'b', d.iteritems()):
pass
The slowest run took 4.92 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 2.23 µs per loop
您可以通过使用
items()
查找b
的值并在需要的地方进行切片来进行迭代。如果您有自己的方法知道要从哪里开始,请替换d.keys().index('b')
。在使用
items()
可以像平常一样获取键和值。在一个适用于Python 2和3的解决方案,使用
itertools.dropwhile()
:输出:
^{pr2}$Python2,避免使用
.items()
创建键值列表:定时
这样行吗?在
其中
my_key
是您要从中开始的键相关问题 更多 >
编程相关推荐