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

2024-06-16 10:38:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,尝试创建一个类inherit from dictionary,同时拥有一个属性名reverseemap。reversemap属性是另一个字典,它包含来自主字典的值的键。示例as下图:-你知道吗

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']赋值时,它会抛出一个错误 自反映射[项目]=键 AttributeError:“DictWithReverseMap”对象没有属性“reversemap”

你知道吗?谢谢。你知道吗


Tags: keyfromself字典属性defhhresult
1条回答
网友
1楼 · 发布于 2024-06-16 10:38:04

您没有使用超类(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

相关问题 更多 >