从dict

时间:2015-10-19 08:43:38

标签: python dictionary

我有一个类Foo,它有一个实例字符串变量id。我实现了__eq____hash__魔术方法,因此它们只使用id,因此Foo实例及其字符串id被映射到同一个哈希表桶。但是,有一个dict,键是Foo个实例,我只有字符串id。我想检索Foo中存在的id实例。

一种方法是迭代dict中的所有键,但是有更高效/更简单的东西吗?

3 个答案:

答案 0 :(得分:3)

无法直接检索使用密钥的相应Foo()对象,编号

您的选择是遍历所有键并匹配id属性,或者使用Foo(id)重新创建对象;如果您只需要将其用作查找键,那么这应该就足够了。

如果这些对象具有更多属性且id唯一映射到这些属性,请考虑添加另一个字典,将映射ID保存到Foo()个实例。

答案 1 :(得分:2)

只需使用给定的Foo创建虚拟 id对象,然后在地图中查找。

答案 2 :(得分:2)

除了@Martijn Pieters的回答:

如果您的Foo很重,您可以定义一个功能最少的课程Barself.id__eq____hash__)并制作你的Foo继承了它。

然后,您可以使用轻量级Bar实例从字典中检索与Foo对象关联的值。