我可以使用对象(类的实例)作为 Python 中的字典键吗?
我想使用类实例作为字典键,例如:
classinstance = class()
dictionary[classinstance] = 'hello world'
Python似乎无法将类作为字典键处理,还是我错了? 另外,我可以使用像 [(classinstance, helloworld),...] 这样的元组列表来代替字典,但这看起来非常不专业。 您有解决该问题的任何线索吗?
I want to use a class instance as a dictionary key, like:
classinstance = class()
dictionary[classinstance] = 'hello world'
Python seems to be not able to handle classes as dictionary key, or am I wrong?
In addition, I could use a Tuple-list like [(classinstance, helloworld),...] instead of a dictionary, but that looks very unprofessional.
Do you have any clue for fixing that issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您的实例必须是可哈希的。 Python 术语表告诉我们:
Your instances need to be hashable. The python glossary tells us:
以下代码效果很好,因为默认情况下,您的类对象是可散列的:
输出:
你好世界
此外,为了更高级的用法,您应该阅读这篇文章:
自定义类型作为字典的对象键
The following code works well because by default, your class object are hashable :
Output :
Hello world
In addition and for more advanced usage, you should read this post :
Object of custom type as dictionary key
尝试在您的类中实现 hash 和 eq 方法。
例如,这是我制作的一个简单的可哈希字典类:
Try implementing the hash and eq methods in your class.
For instance, here is a simple hashable dictionary class I made:
使用实例作为字典键没有任何问题,只要它遵循规则:字典键必须是不可变的。
There is nothing wrong with using an instance as a dictionary key so long as it follows the rules: A dictionary key must be immutable.
您可以创建一个像“Strategy”这样的文件夹,然后您可以使用 pickle 来保存和加载类的对象。
我创建了一个类的两个对象并调用了该类的方法。
我希望,它可以帮助你。
You can create a folder like 'Strategy' then you can use pickle to save and load the objects of your class.
I created two objects of one class and called a method of the class.
I hope, it can help you.