Creating a dict-like class that counts successful and failed key matches

python at bdurham.com python at bdurham.com
Mon Jun 30 10:10:17 EDT 2014


After some additional research, it looks like I may have even
more options to consider including using a UserDict mixin.



I think I've identified another magic method to subclass ...
__missing__.





----- Original message -----

From: [1]python at bdurham.com

To: [2]python-list at python.org

Subject: Creating a dict-like class that counts successful and
failed key matches

Date: Mon, 30 Jun 2014 09:43:49 -0400



As a diagnostic tool, I would like to create a dict-like class
that counts successful and failed key matches by key. By failed
I mean in the sense that a default value was returned vs. an
exception raised. By count, I mean by tracking counts for
individual keys vs. just total success/failure counts. The
class needs to support setting values, retrieving values, and
retrieving keys, items, and key/item pairs. Basically anything
that a regular dict, I'd like my modified class to do as well.



Use case: I'm curious to see what key's we're missing that our
code is using default to provide and I'm also interested in
looking at our high frequency keys as a way to double check our
processes.



Is this a common pattern covered by the standard lib (I don't
see anything in collections)?



I'm looking for ideas on how to implement ... as a subclass of
Dict, as a duck-like class offering Dict like methods, other?



I'm also looking for some hints on what magic methods I should
override to accomplish my goal, eg. beyond __getitem__.



Thank you,

Malcolm



--

[3]https://mail.python.org/mailman/listinfo/python-list

References

1. mailto:python at bdurham.com
2. mailto:python-list at python.org
3. https://mail.python.org/mailman/listinfo/python-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20140630/d95a1b5e/attachment.html>


More information about the Python-list mailing list