• yanyu-xin
    2023-03-02 来自广东
    class Mydict(dict): def __setitem__(self, key, value): if self.get(key): print(f"赋值错误,key '{key}'已经存在,放弃赋值") self.setdefault(key,value) dict1 = Mydict({"a":11,"b":22}) dict1["c"] =2 dict1['b'] = 200 print(dict1) ## 请问:这种方法,或者用其他同学方法都无法在以下情况下提示出错。如何简单处理为好?是逐一函数修改吗 dict1.setdefault('c',12) print(dict1)

    作者回复: class Mydict(dict): def __setitem__(self, __key, __value) : if __key in self: print('key 存在') return -1 else: return super().__setitem__(__key,__value) dict1 = Mydict({'a':1}) dict1.setdefault('a',123) print(dict1)

    
    
  • 江江儿嘛哩哄
    2023-03-08 来自浙江
    from collections import UserDict class MyDict(UserDict): def __setitem__(self, key, value): if key in self.data.keys(): print(f"已存在key {key}, 请重新赋值") else: self.data[key] = value dict1 = MyDict() dict1['a'] = 1 dict1['a'] = 2
    
    
  • 朱雯
    2023-02-05 来自北京
    #看到了一些同学的做法,继承userdict类,这是上一节课程老师的方式,但既然是学习魔术方法,我就想就使用dict类本身来解决这个问题 class Mydict(dict): def __setitem__(self,key,value): if self.get(key): print(f"key {key}已经存在,无法赋值") else: super().__setitem__(key,value) #测试 dict2 = Mydict({"a":1,"b":2}) print(dict2) dict2['a'] = 1 dict2['b'] = 2 dict2["c"] =2 dict2['d'] = 4 print(dict2)
    
    
  • Francis
    2023-02-02 来自上海
    from collections import UserDict class MyDict(UserDict): def __setitem__(self, key, value) -> None: if key in self.data.keys(): print(f'赋值错误,key {key} 已存在,放弃赋值') else: self.data[key] = value mydict = MyDict() mydict['a'] = 1 print(mydict) mydict['a'] = 2 print(mydict)
    
    
  • Cy23
    2023-01-20 来自辽宁
    from collections import UserDict class MyDict(UserDict): def __setitem__(self, key, value) -> None: if key in self.data.keys(): print(f"赋值错误,key “{key}” 已存在,放弃赋值") else: self.data[key] = value mydict = MyDict() mydict['a'] = 1 mydict['a'] = 1 # 对相同的 key 赋值报错。
    
    
  • Matthew
    2023-01-13 来自江苏
    from collections import UserDict class MyDict(UserDict): def __setitem__(self, key, value): if key in self.data.keys(): print(f'赋值错误,key “{key}” 已存在,放弃赋值。') else: self.data[key] = value print(f"新元素 {key}:{self.data[key]} 插入字典成功。") # 测试 dict1 = MyDict() dict1[ 'a' ] = 100 dict1[ 'a' ] = 200 # 报错 print(dict1['a'])
    
    
  • PatrickL
    2023-01-11 来自上海
    from collections import UserDict class MyDict(UserDict): def __setitem__(self, key, value): if key in self.data.keys(): print(f'赋值错误,key“{key}”已存在,放弃赋值。') else: self.data[key] = value dict1 = MyDict() dict1['a'] = 1 dict1['a'] = 2
    
    