Рассмотрим список координат х / у и число байтов. x / y будет иметь диапазон от 0 до 5000, что составляет 25 миллионов ячеек.
Однако данные будут довольно малочисленными, их будет не более нескольких тысяч, а большинство координат будут иметь нулевые записи.
Структура будет иногда просматриваться / добавляться (например, если есть что-то в x = 5 и y = 10, то ++), но чаще конвертируется в список x / y / count (сортировка не важна)
Самая быстрая структура данных для поиска - это, очевидно, двумерный массив, но вы смотрите на 24 МБ памяти или около того, итерация для вывода списка может быть дорогой. Для дискового хранилища вы можете реализовать сжатие в стиле gif, где 0 байт, за которыми следует другой байт, указывает на x пустых ячеек, а все остальное является значением ячейки - но это не помогает ситуации с памятью.
Словарь словарей, вероятно, будет хорошим балансом между скоростью поиска / итерации и использованием памяти.
Существуют ли другие подходящие структуры данных, которые я должен рассмотреть (встроенные в Python, существующие библиотеки или более общие структуры данных?