A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2013-September/128614.html below:

[Python-Dev] Add a "transformdict" to collections

[Python-Dev] Add a "transformdict" to collections [Python-Dev] Add a "transformdict" to collectionsTim Delaney timothy.c.delaney at gmail.com
Thu Sep 12 23:34:15 CEST 2013
On 13 September 2013 07:29, Tim Delaney <timothy.c.delaney at gmail.com> wrote:

>
> In this case though, there are two pieces of information:
>
> 1. A canonical key (which may or may not equal the original key);
>
> 2. The original key.
>
> It seems to me then that TransformDict is a specialised case of
> CanonicalDict, where the canonical key is defined to be the first key
> inserted. It would in fact be possible (though inefficient) to implement
> that using a canonicalising callable that maintained state - something like
> (untested):
>
> class OriginalKeys:
>     def __init__(self)::
>         self.keys = CanonicalDict(str.lower)
>
>     def __call__(self, key):
>         return self.keys.setdefault(key, key)
>
> class OriginalKeyDict(CanonicalDict):
>     def __init__(self)::
>         super().__init__(OriginalKeys())
>

Bah - got myself mixed up with original key and case preserving there ...
try this:

class OriginalKeys:
    def __init__(self, func)::
        self.keys = CanonicalDict(func)

    def __call__(self, key):
        return self.keys.setdefault(key, key)

class OriginalKeyDict(CanonicalDict):
    def __init__(self, func)::
        super().__init__(OriginalKeys(func))

class IdentityDict(OriginalKeyDict):
    def __init__(self):
        super().__init__(id)

class CasePreservingDict(OriginalKeyDict):
    def __init__(self):
        super().__init__(str.lower)

Tim Delaney
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130913/ede12be5/attachment.html>
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4