Como obter o Python para formatar normalmente Nenhum e campos não existentes [duplicados]

Esta questão já tem uma resposta aqui:

Deixando os valores em branco se não forem passados ​​em str.format 5 respostas

Se eu escrever em Python:

data = {'n': 3, 'k': 3.141594, 'p': {'a': 7, 'b': 8}}
print('{n}, {k:.2f}, {p[a]}, {p[b]}'.format(**data))
del data['k']
data['p']['b'] = None
print('{n}, {k:.2f}, {p[a]}, {p[b]}'.format(**data))

Eu recebo:

3, 3.14, 7, 8
Traceback (most recent call last):
  File "./funky.py", line 186, in <module>
    print('{n}, {k:.2f}, {p[a]}, {p[b]}'.format(**data))
KeyError: 'k'

Em vez de uma mensagem de erro,Como posso obter o Python para formatar mais graciosamente os campos Nenhum e Não Existente?

Para dar um exemplo, gostaria de ver na saída algo mais parecido com:

3, 3.14, 7, 8
3, ~, 7, ~

Idealmente, é claro, gostaria de poder especificar a string usada em vez desses valores ausentes.

questionAnswers(3)

yourAnswerToTheQuestion