Мне интересно, каковы плюсы / минусы вложенных диктов по сравнению с хэшированием кортежа в Python?
Контекст представляет собой небольшой скрипт для назначения "мастерских" участникам на конференции.
Каждый семинар имеет несколько атрибутов (например, неделя, день, предмет и т. Д.).Мы используем четыре из этих атрибутов, чтобы назначить семинары для каждого участника - т.е. у каждого делегата будет также неделя / день / тема и т. Д.
В настоящее время я использую вложенный словарь для хранения своих семинаров:1007 *
workshops = defaultdict(lambda: defaultdict(lambda:defaultdict(lambda:defaultdict(dict))))
with open(input_filename) as input_file:
workshop_reader = csv.DictReader(input_file, dialect='excel')
for row in workshop_reader:
workshops[row['Week ']][row['Stream']][row['Strand']][row['Day']] = row
return workshops
Затем я могу использовать вышеуказанную структуру данных, чтобы назначить каждому посетителю их семинар.
Проблема позже, мне нужно пройтись по каждому семинару и назначить идентификатор (этот идентификаторхранится в другой системе), что требует развертывания структуры слой за слоем.
Первый вопрос - есть ли другой способ создания вторичного индекса с теми же значениями, используя строку (имя мастерской) в качествеключ?Т.е. у меня все еще были бы четырехуровневые вложенные диктовки, но я также мог бы искать отдельные записи, основываясь только на имени.
Во-вторых - как я могу добиться аналогичного эффекта, используя кортежи в качестве ключа?Есть ли какие-либо преимущества использования такого подхода?Будет ли он намного чище или проще в использовании?(Это все разворачивает, это немного больно, и я не думаю, что это очень доступно).
Или есть какие-то другие структуры данных, которые вы могли бы порекомендовать, которые могут быть лучше / проще для доступа / манипулирования?
Спасибо, Виктор