Python在从字典继承的类中添加反向映射字典属性
我是Python新手,尝试创建一个从字典继承的类,同时拥有一个属性名reversemap。reversemap属性是另一个字典,其中包含来自主字典的值的键。示例如下:-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
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个值。但是您可以改变方法,改为使用列表。