Edit:字典是未订购。这是不可能的get_range
每当您修改字典时都返回相同的切片。如果您需要确定性结果,请替换您的dict
with a collections.OrderedDict http://docs.python.org/library/collections.html#collections.OrderedDict.
无论如何,你可以得到一块using itertools.islice http://docs.python.org/library/itertools.html#itertools.islice:
import itertools
def get_range(dictionary, begin, end):
return dict(itertools.islice(dictionary.iteritems(), begin, end+1))
之前按键过滤的答案保留如下:
With @Douglas https://stackoverflow.com/questions/4194365/python-how-to-get-a-subset-of-dict/4194392#4194392' 算法,我们可以通过使用生成器表达式来简化它:
def get_range(dictionary, begin, end):
return dict((k, v) for k, v in dictionary.iteritems() if begin <= k <= end)
顺便说一句,不要使用dict
作为变量名称,如您所见dict
是字典的构造函数。
如果您使用Python 3.x,则可以直接使用字典理解。
def get_range(dictionary, begin, end):
return {k: v for k, v in dictionary.items() if begin <= k <= end}