Qual é a melhor maneira de implementar dicionários aninhados?

Eu tenho uma estrutura de dados que basicamente equivale a um dicionário aninhado. Digamos que seja assim:

{'new jersey': {'mercer county': {'plumbers': 3,
                                  'programmers': 81},
                'middlesex county': {'programmers': 81,
                                     'salesmen': 62}},
 'new york': {'queens county': {'plumbers': 9,
                                'salesmen': 36}}}

Agora, manter e criar isso é bastante doloroso; toda vez que tenho um novo estado / município / profissão, tenho que criar os dicionários da camada inferior por meio de blocos desagradáveis de tentativa / captura. Além disso, tenho que criar iteradores aninhados irritantes se quiser passar por todos os valore

Eu também poderia usar tuplas como chaves, assim:

{('new jersey', 'mercer county', 'plumbers'): 3,
 ('new jersey', 'mercer county', 'programmers'): 81,
 ('new jersey', 'middlesex county', 'programmers'): 81,
 ('new jersey', 'middlesex county', 'salesmen'): 62,
 ('new york', 'queens county', 'plumbers'): 9,
 ('new york', 'queens county', 'salesmen'): 36}

Isso torna a iteração dos valores muito simples e natural, mas é mais sintaticamente doloroso fazer coisas como agregações e olhar para subconjuntos do dicionário (por exemplo, se eu só quero ir estado a estado).

Basicamente, às vezes eu quero pensar em um dicionário aninhado como um dicionário simples, e às vezes eu quero pensar nele de fato como uma hierarquia complexa. Eu poderia agrupar tudo isso em uma classe, mas parece que alguém já deve ter feito isso. Como alternativa, parece que pode haver algumas construções sintáticas realmente elegantes para fazer iss

Como eu poderia fazer isso melhor?

Adendo: Estou ciente desetdefault() mas não cria uma sintaxe limpa. Além disso, cada sub-dicionário que você cria ainda precisa tersetdefault() definido manualmente.

questionAnswers(20)

yourAnswerToTheQuestion