Вот подход, который может сработать.
Каждая точка представляет собой 4-х кортеж (x, y, z, data), и ваша база данных выглядит так:
database = [ (x,y,z,data), (x,y,z,data), ... ]
Давайте рассмотрим ваши варианты использования.
Получите точку, где x = 1, y = 2, z = 3.
[ (x,y,z,data) for x,y,z,data in database if (x,y,z) == (1,2,3) ]
Получение всех точек, где y = 2.
[ (x,y,z,data) for x,y,z,data in database if y == 2 ]
Получение всех точек в пределах 3 единиц положения x = 1, y = 2, z = 3.
[ (x,y,z,data) for x,y,z,data in database if math.sqrt((x-1)**2+(y-2)**2+(z-3)**2)<=3.0 ]
Получение всех точек, где point.getType () == "Foo"
[ (x,y,z,data) for x,y,z,data in database if type(data) == Foo ]