Jak zdobyć Pythona do wdzięcznego formatu Żadne i nieistniejące pola [duplikat]

To pytanie ma już tutaj odpowiedź:

Pozostawienie pustych wartości, jeśli nie zostaną przekazane w str.format 5 odpowiedzi

Jeśli piszę w Pythonie:

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))

Dostaję:

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'

Zamiast komunikatu o błędziejak mogę zmusić Pythona do bardziej płynnego formatowania pól Brak i nieistniejących?

Aby dać przykład, chciałbym zobaczyć w wynikach coś więcej:

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

W idealnej sytuacji chciałbym oczywiście określić ciąg znaków zamiast tych brakujących wartości.

questionAnswers(3)

yourAnswerToTheQuestion