python继承字典实现一个特殊的类
我想实现一个特殊的字典,当我向字典中插入一个新的key-value对时,字典内部自动帮我生成一个反向的key-value对,比如我写入'一': 1 , 那么字典里同时也存在1: '一', 因为这种映射关系也是成立的,但我不想写入两次。
下面是我的实现
class DoubleDict(dict):
def __delitem__(self, key): # 删除一个key, 也必须删除value
value = super().pop(key)
super().pop(value, None)
def __setitem__(self, key, value): # 先设置key-value, 再设置value-key
super().__setitem__(key, value)
super().__setitem__(value, key)
def update(self, another):
for key, value in another.items():
self.__setitem__(key, value)
def __repr__(self):
return f"{type(self).__name__}({super().__repr__()})"
dic = DoubleDict()
print(dic)
dic['一'] = 1
dic['二'] = 2
print(dic['一'])
print(dic[2])
dic.update({'三': 3})
print(dic[3])
设计一个类,继承dict, 然后重载__delitem__ , __setitem__, update,__repr__方法
__delitem__ 是删除给定键对应的值
__setitem__ 设置给定键的值
update是更新字典的方法
__repr__ 是显示对象信息的方法,由于字典的该方法显示的是字典的内容,因此我进行了重载,让其显示出类的名字