Я не уверен, что понял ваш вопрос. Но я думаю, что slice
объект - это то, что вы ищете:
Сначала вместо пустого кортежа используйте None, чтобы включить все значения во времени
filters= {'x':(0,20), 'y':(3), 'z':(1,2), 'time':None}
Затем создайте словарь срезов следующим образом:
d = dict(
(k, slice(*v) if isinstance(v, tuple) else slice(v))
for k, v in filters.iteritems()
)
Вот вывод:
{
'y': slice(None, 3, None),
'x': slice(0, 20, None),
'z': slice(1, 2, None),
'time': slice(None, None, None)
}
Затем вы можете использовать объекты срезов, чтобы извлечь диапазон из списка