__sizeof__ метод для стандартных типов возвращает объем памяти в байтах которое занимает python объект в памяти компьютера, это вовсе не означает что это его реальный объем. Что бы понять сколкьо занимает места ваш словарь ровно как передать его через внешние интерфейсы, Вам нужно сериализовать его в строковое представление.
d = {'key': 'one', 'value':1500, 'pos': [1,3,2,4]}
d.__sizeof__()
124
import cPickle
len(cPickle.dumps(d))
78
А вот потом его уже можно попробовать сжать zlib.compress, но опять же стоить помнить о накладных ресурсах алгоритмов сжатия deflate и его семейства - маленькие строки он не сжимает эффективно.