нужно сделать быстрый поиск value2 по value1 и value1 по value2
Первым напрашивается вариант с двумя словарями
Первый из value1 в value2
Второй из value2 в value1
Но можно ли это улучшить в плане потребления памяти?
Ты пытаешься сделать реляционную бд
Или хотя бы нереляционную.
Да, видимо без какого-нибудь рэдиса не выйдет(
Редис здесь не поможет
Ну, памяти конечно будет столько же забирать Но зато это будет на стороне БД, а не апликухи
двумя? можно и одним {'1':'2','2':'1'} . А чтобы память экономить посмотри bidict он вроде не держит зеркальные ключи а налету пересчитывает k-v —» v-k
Я имею в виду, что бессмысленно брать redis в этом случае, лучше взять какую-нибудь реляционку
Почему бессмысленно? Так и тут всего лишь key:value простое
а как ты получишь key по value?
Ну, так же само буду хранить два маппинга Из первого во второе Из второго в первое
И смысл тогда от редиса?
key1 value1 key2 value1 что в таком случае?
Чтобы не хранить эти данные в апликейшене
если важна память то зачем держать в памяти если каждый раз можно читать с файла ну или с SQLite файла
Ну хз, ограничивать себя без понятной на то причины странно. К тому же баснословных денег будет стоить редис на 1гб
Ну есть какая-то либа bidict, хз что там по памяти
pandas
вариант - два массива, отсортированные по 1 и 2 половинам, бинарный поиск
это будет меньше есть чем словарь?
ну по логике должно меньше, словари же память выделяют с оверхедом
я ж написал массива
что за массивы в питоне, которые умеют строки хранить?
а, походу нету таких
Обсуждают сегодня