Dictionary bidirectional

Akathorn Greyhat akathorn at gmail.com
Mon Jul 14 16:01:07 CEST 2008


This is a better version of the class that I sen't you, now it raises a
KeyError when you try to insert a value that is already in

############################
class MyCoolDictionary(dict):
    def __init__(self, *args, **kargs):
        dict.__init__(self, *args, **kargs)

    def __setitem__(self, *args, **kargs):
        for i in dictio.values():
            if args[0]==i or args[1]==i:
                raise KeyError, 'Value already exists'

        dict.__setitem__(self, *args, **kargs)

    def __getitem__(self, item):
        try:
            return dict.__getitem__(self, item)

        except KeyError:
            keys=[]
            for i in dictio.keys():
                if dictio[i]==item:
                    keys.append(i)
            if not keys:
                raise KeyError, 'Can\'t found key or value "' + str(item) +
'"'
            return keys
############################

Feel free to change anything you want or need

Regards,
Akathorn Greyhat


2008/7/14 Kless <jonas.esp at googlemail.com>:

> I need a dictionary where get the result from a 'key' (on left), but
> also from a 'value' (on right), how to get it?
>
> I know that dictionaries aren't bidirectional, but is there any way
> without use two dictionaries?
>
>
> Thanks in advance!
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20080714/2814e56e/attachment.html>


More information about the Python-list mailing list