Python在从字典继承的类中添加反向映射字典属性

Python在从字典继承的类中添加反向映射字典属性,python,dictionary,Python,Dictionary,我是Python新手,尝试创建一个从字典继承的类,同时拥有一个属性名reversemap。reversemap属性是另一个字典,其中包含来自主字典的值的键。示例如下:- class DictWithReverseMap(dict): def __init__(self): self.reversemap = dict() self.__dict__ = dict() def __setitem__(self, key, item): self.__dict__[k

我是Python新手,尝试创建一个从字典继承的类,同时拥有一个属性名reversemap。reversemap属性是另一个字典,其中包含来自主字典的值的键。示例如下:-

class DictWithReverseMap(dict):
  def __init__(self):
    self.reversemap = dict()
    self.__dict__ = dict()
  def __setitem__(self, key, item):
    self.__dict__[key] = item
    self.reversemap[item] = key

hh= DictWithReverseMap()
hh['1'] = "a"
hh['2'] = "a"
hh['3'] = "b"

print hh[1]  #result [a]
print hh.reversemap[b]    #result [3]
当我试图给hh['1']赋值时,它会抛出一个错误,指出 self.reversemap[项目]=键 AttributeError:“DictWithReverseMap”对象没有属性“reversemap”


有什么想法吗?谢谢。

您没有使用超类(
dict
)中的函数。这就是你应该如何实现它

class DictWithReverseMap(dict):
  def __init__(self):
    super(DictWithReverseMap, self).__init__()
    self.reversemap = dict()
  def __setitem__(self, key, item):
    super(DictWithReverseMap, self).__setitem__(key, item)
    self.reversemap[item] = key

hh= DictWithReverseMap()
hh['1'] = "a"
hh['2'] = "a"
hh['3'] = "b"

print hh.keys()
print hh['1']  # Remember to use quote around the number 1
print hh.reversemap['b']    # Remember to use quote around the letter b

非常感谢它的工作!还有一个问题,为什么打印hh.reversemap['a']只返回2。它应该同时返回1和2,对吗?一个键在一个dict中不能有2个值。但是您可以改变方法,改为使用列表。