Выбор структуры данных Python - PullRequest
0 голосов
/ 05 мая 2020

Мне было интересно, какая структура данных (встроенная или нет) будет оптимальной для доступа к данным, которые принимают на входе 5 условий.

Например:

 if (cond_a == 2) & (cond_b == 3) ... (cond_e == 6):
    value = 5

Я ищу в первую очередь скорость, а не эффективность памяти. Между 5 условиями нет никакой связи (они независимы друг от друга). Однако элемент может иметь несколько значений для каждого условия - структура данных будет возвращать итерацию значений.

Я рассматривал возможность использования вложенных упорядоченных словарей (глубина 5 уровней) - есть ли лучший вариант?

редактировать - не обязательно может быть уникальное значение для всех комбинаций 5 условий. Для определенных комбинаций условий изменение одного условия в этой комбинации может не изменить окончательное значение.

1 Ответ

1 голос
/ 05 мая 2020

Если вы всегда хотите, чтобы значение соответствовало всем пяти условиям, используйте один словарь с кортежем из 5 в качестве ключа.

from typing import Dict, Tuple

data: Dict[Tuple[int, int, int, int, int], int] = {
    (2, 3, 4, 5, 6): 5
}

value = data[(cond_a, cond_b, cond_c, cond_d, cond_e)]

Если вы хотите иметь возможность выполнять запросы для значений, которые соответствуют только некоторые условия, тогда я думаю, вам нужно несколько словарных статей (не вложенных, со значениями, хранящимися в наборах, чтобы вы могли делать пересечения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...