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

时间:2018-12-13 14:14:04

标签: python oop dictionary

我有一些令人困惑的代码,我正在尝试迁移到Typescript。看这个:

collation := &mgo.Collation{
    Locale:   "en",
    Strength: 2, 
}


err := collection.Find(query).Collation(collation)

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

2 个答案:

答案 0 :(得分:1)

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

Octopus类必须以某种方式创建不可变的实例。例如,它可能是元组的子类,或者使用__slots__来做到这一点。

答案 1 :(得分:0)

只有不可变的类型可以用作python中的键。要解决此问题,请将其包装为元组:

self.special_octopoda(<something>, Octopus(...))

或使您的课程可散列:

class Octopus:
    def __hash__(self):
        # hash implementation
相关问题