Fuzzy matching dict keys
A few other methods I would suggest implementing:


get;
setdefault;
has_key (if supporting 2.x); and
__repr__/__str__.




There is an edge case on hashable collections (tuple, frozenset):

&gt;&gt;&gt; d = FriendlyDict()
&gt;&gt;&gt; d[(1, 2)] = "foo"
&gt;&gt;&gt; d[1]
'foo'
&gt;&gt;&gt; d[frozenset(("bar", "baz"))] = 3
&gt;&gt;&gt; d["bar"]
3


Also equality comparisons might be a problem - should two FriendlyDicts be considered equal if all (most?) of their keys are "close enough" and have the same values?



In terms of additional features, consider whether numerical keys should be matched with some tolerance - dictionaries not handling floats particularly well could be one reason to use this class. Also, a missing letter within a string key might be something to pick up (e.g. d["parameer"]).