【发布时间】:2018-09-26 15:58:24
【问题描述】:
我从 dict 类继承并尝试对项目进行 1 对 1 映射。
我正在尝试实现给定的 setitem 而不是 key:value key1:key 2, key2:key1 也被添加。 如果其中任何一个键已经存在,则应在添加对之前弹出它们。我该如何实现 setitem?
init 应该能够构造一个空映射或来自给定字典的映射
有什么想法吗?谢谢
class Mapping(dict):
def __init__(self, Map = None):
if Map = None:
Map = dict()
else:
self.update(Map)
def __repr__(self):
return "Mapping({})".format(dict.__repr__self)
def pop(self):
return self.pop #??? How can I pop a key and also pop the key it maps to?
def __setitem__(self, key1,key2):
self.__dict__[key1] = key2
self.__dict__[key2] = key1
【问题讨论】:
-
pop应该接受一个论点。 dict.pop 以键为参数 -
你也不想使用
dict()作为Map的默认值;使用None,并分配一个新的dictinside__init__ifMap is None. -
如果你有 1 映射到 2 和 3 映射到 4,然后你做
map[2] = 3,现有的映射会发生什么?他们都被删除了吗? -
@user2357112 如果密钥 1 或密钥 2 已经存在,那么在添加对之前应该弹出它们是
-
注意:dict 更新不使用 setitem
标签: python python-3.x class dictionary inheritance