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__方法

  1. __delitem__ 是删除给定键对应的值
  2. __setitem__ 设置给定键的值
  3. update是更新字典的方法
  4. __repr__ 是显示对象信息的方法,由于字典的该方法显示的是字典的内容,因此我进行了重载,让其显示出类的名字

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案