【发布时间】:2011-06-21 13:41:04
【问题描述】:
我必须怎么做才能将自定义类型的对象用作 Python 字典中的键(我不希望“对象 id”充当键),例如
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
如果名称和位置相同,我想将 MyThing 用作被视为相同的键。 从 C#/Java 开始,我习惯于重写并提供 equals 和 hashcode 方法,并承诺不会改变 hashcode 所依赖的任何内容。
我必须在 Python 中做什么才能完成此任务?我什至应该吗?
(在一个简单的情况下,比如这里,最好只放置一个 (name,location) 元组作为键 - 但考虑我希望键是一个对象)
【问题讨论】:
-
使用哈希有什么问题?
-
可能是因为他想要两个
MyThing,如果它们具有相同的name和location,来索引字典以返回相同的值,即使它们是作为两个不同的“对象”。 -
“也许最好只放置一个(名称,位置)元组作为键 - 但考虑我希望键是一个对象)”你的意思是:一个非复合对象?
标签: python dictionary