Вот один из способов сделать это
d = {(15,21): "value1", (7,45): "value2", (500,321): "value3"}
x1, x2, y1, y2 = 6, 16, 20, 46
dict((k,v) for k, v in d.iteritems() if x1<k[0]<x2 and y1<k[1]<y2)
В Python 2.7 добавлено понимание словаря.Последняя строка становится более читабельной:
{k: v for k, v in d.iteritems() if x1<k[0]<x2 and y1<k[1]<y2}