>>> d = {'i:crid1': 1, 'c:crid1': 1, 'i:crid2': 1, 'c:crid2': 1}
>>> %timeit dict((k, v) for k, v in d.iteritems() if k.startswith('c:'))
# 100000 loops, best of 3: 4.12 us per loop
>>> import re
>>> patt = re.compile('^c:.')
>>> %timeit dict((k, v) for k, v in d.iteritems() if patt.match(k))
# 100000 loops, best of 3: 5.22 us per loop
>>> { k:v for k,v in d.iteritems() if k.startswith('c:') }
# 100000 loops, best of 3: 2.22 us per loop
使用dict理解既快速又简洁,尽管如果速度确实是个问题,那么dict一开始就显得不太合适:
或者,如果您使用的是Python 2.7之前的版本:
^{pr2}$如果速度是最重要的,您可能需要首先构建dict的dict,其中外部dict按前缀索引:
如果空间不是对象,并且您有时需要整个dict而不是前缀子集,那么您可以同时构建一个大dict和dict版本的dict;否则,在需要时动态构建它并不难。在
相关问题 更多 >
编程相关推荐