Как вы хотите получить доступ к вашей иерархии?
Если вы всегда будете проверять полный путь, тогда, как и предлагалось, используйте кортеж:
например:
>>> d["a","b1","c",1,"d"] = value
Однако, если вы собираетесь делать такие вещи, как "быстро найти все элементы ниже" a -> b1 ", возможно, имеет смысл сохранить его как вложенную хеш-таблицу (в противном случае вы должны выполнить итерацию по всем найдите тех, в ком вы заинтересованы).
Для этого defaultdict - это, вероятно, самый простой способ хранения. Например:
from collections import defaultdict
def new_dict(): return defaultdict(new_dict)
d = defaultdict(new_dict)
d["a"]["b1"]["c"][1]["d"] = "test"
d["a"]["b2"]["c"][2]["d"] = "test2"
d["a"]["c"][1]["d"] = "test3"
print d["a"]["c"][1]["d"] # Prints test3
print d["a"].keys() # Prints ["c", "b1", "b2"]