Allowing missing item or attributes in operator's itemgetter and attrgetter

I meant for defaultdicts or any object that already implements fallback defaults.

E.g. ChainMap does (3) to account for this.

But ChainMap is expected to be used with mappings and I agree that this doesn’t need to be the same.

I think leaving this to behave as (1) might be best.
If mental model is such that itemgetter calls __getitem__ and returns default on error, then all works simple and well.

attrgetter potentially has the same issue, but I don’t think there is a need to overcomplicate these.

I think these are mostly used for pre-compiled performance gain. In this case anyone who has defaultdict can “pre-compile” it to dict or employ some other strategy to do the right thing depending on a situation.