【发布时间】:2011-03-20 02:49:55
【问题描述】:
Python dict 是一个非常有用的数据结构:
d = {'a': 1, 'b': 2}
d['a'] # get 1
有时您还希望按值索引。
d[1] # get 'a'
实现这种数据结构的最有效方法是什么?有什么官方推荐的方法吗?
【问题讨论】:
-
如果您愿意,我们可以假设值和键一样是不可变的。
-
你会为这个字典返回什么:{'a' : 1, 'b': 2, 'A' : 1 }
-
@PaulMcGuire:我会返回
{1: ['a', 'A'], 2: 'b'}。请参阅我的答案以了解这种方法。 -
版主注意:这不是与stackoverflow.com/questions/1456373/two-way-reverse-map 的重复。后者有 1) 非常模糊的措辞 2) 没有 MCVE 3) 只处理双射映射的情况(参见这个问题中的第一条评论),这比这个更笼统的实际问题更具限制性。所以我认为将其标记为重复在这里,在这种特殊情况下,会产生误导。如果真的一个应该是另一个的副本,那应该是相反的,因为这里的这个涵盖了一般情况,而另一个(见答案)不涵盖非双射的情况。
-
这个问题十多年了,但我现在是第一次阅读。您可能会在 Java 库 Google Guava 中找到灵感。他们有一门课程
HashBiMap值得一读。 (我假设可以在 Python 中实现类似的结构。)文档清楚地概述了边缘情况以及如何处理它们。参考:github.com/google/guava/blob/master/guava/src/com/google/common/…
标签: python hashtable bidirectional