currently dicts have insert-or-update semantics, e.g.:
dict([((), 1), ((), 2)])
{(): 2}
this is fine. however, in many cases insert or insert-or-ignore are more useful: (hypothetical examples)
InsertOrIgnoreDict([((), 1), ((), 2)])
{(): 1}
InsertDict([((), 1), ((), 2)])
Traceback: [...] ValueError: key exists
these are useful when dealing with custom config file formats, config overrides, among other things.
additionally we could also get an UpdateDict, a *view* into a dict that only allows updating existing entries:
a = {'a': 1} b = {'a': 2, 'b': 3} UpdateDict(a).update(b) a
{'a': 2}
but I don't see an obvious usefulness to this one. it'd just be for consistency with other SQL-esque dict wrappers (like the above InsertOrIgnoreDict and InsertDict).