首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,对象可以用作字典中的键吗?

在Python中,对象可以用作字典中的键吗?
EN

Stack Overflow用户
提问于 2018-12-13 22:14:04
回答 2查看 75关注 0票数 0

我有一些令人费解的代码,我正试图迁移到Typescript。看看这个:

代码语言:javascript
复制
    def add_Octopus(self, code, cracker, fate, description, arm_number, ink_content, fate_pointer, churlishness=None):
    self.special_octopoda[
        Octopus(code, description, arm_number, fate, churlishness, self, ink_content, fate_pointer)] = fate_pointer, cracker

在我看来,八达通对象被用作名为special_octopoda的字典中的关键字。这在Python中是允许的吗?它肯定不是Typescript/Javascript。

EN

回答 2

Stack Overflow用户

发布于 2018-12-13 22:15:28

是的,您可以使用任何不可变对象作为Python字典中的键。

Octopus类必须以某种方式创建不可变的实例。例如,它可以是元组的子类,也可以使用__slots__来实现。

票数 1
EN

Stack Overflow用户

发布于 2018-12-13 22:16:55

只有不可变类型才能用作python中的键。对于可能的解决方法,请将其包装为元组:

代码语言:javascript
复制
self.special_octopoda(<something>, Octopus(...))

或者让你的类变得可哈希:

代码语言:javascript
复制
class Octopus:
    def __hash__(self):
        # hash implementation
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53763823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档