Verificar um dicionário aninhado usando uma cadeia de notação de pontos “a.b.c.d.e” cria automaticamente os níveis ausentes

Este está soprando minha mente. Dado o seguinte dicionário:

    d = {"a":{"b":{"c":"winning!"}}}

Eu tenho essa string (de uma fonte externa, e não posso mudar essa metáfora).

    k = "a.b.c"

Eu preciso determinar se o dicionáriotem a chave 'c', então eu posso adicionar se não.

Isso funciona maravilhosamente para recuperar um valor de notação de ponto:

    reduce(dict.get, key.split("."), d)

mas eu não consigo descobrir como "reduzir" um cheque has_key ou qualquer coisa assim.

Meu maior problema é este: dado "a.b.c.d.e", eu preciso criartodos os elementos necessários no dicionário, mas não os pise se já existirem. Se alguém conhece uma maneira incrível de fazer tudo isso, você será meu herói.

questionAnswers(4)

yourAnswerToTheQuestion