Кортежи можно хэшировать. Возможно, я упускаю суть, но почему бы вам не использовать стандартный словарь с условием, что ключи будут тройными? Например:
userdict = {}
userdict[('site1', 'board1', 'username')] = 'tommy'
С моей точки зрения, это довольно субъективный вопрос. Для меня реальный вопрос будет заключаться в том, в какой момент вы продвигаете эту вложенную структуру данных к объектам с методами, защищающими вас от изменений. Тем не менее, я, как известно, создавал большие пространства имен прототипов со следующими данными:
from collections import defaultdict
def nesteddict():
return defaultdict(nesteddict)