KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to use an object as a key in a python dictionary, but it's behaving in a way that I can't quite understand. First I create a dictionary with my object as the key: package_disseminators = { ContentType("application", "zip", "http://other/property") : "one", ContentType("application", "zip") : "two" } Now create another object that is "the same" as one which is a key. content_type = ContentType("application", "zip", "http://other/property") I have given the ContentType object custom __eq__ and custom __str__ methods, such that the __eq__ method compares the __str__ values. Now, some interactive python: >>> for key in package_disseminators: ... if key == content_type: ... print "match" ... else: ... print "no match" ... no match match >>> content_type in package_disseminators.keys() True Ok, so it looks like my object is definitely being identified properly as a key, so: >>> package_disseminators[content_type] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: (& (type="application/zip") (packaging="http://other/property") ) Er ... ok? So content_type is in the package_disseminators.keys() list, but isn't a key? >>> package_disseminators.has_key(content_type) False Apparently not. I presume that the comparison process that Python uses to determin equality differs between a straight "in" statement on a list and actually looking up a key in a dict, but I don't know how. Any tips or insights?
Tags (comma-separated)
Save Edits
Cancel