answer
Topic source朋友你好。 这个代码是必要的, 你重复设置值的时候, 他会直接删掉原来的值, 然后新的放进去, 如果没有这个代码, 你的新值是设置不进去的。
廖雪峰不写多余的代码。。。
python 开发者群: 710660072 欢迎加入共同用python改变世界
如果没有这段代码,但同时把<code>del self[key]</code>去掉,是可以重复设置的,不然就报错了。 这段代码的意义在于:超过容量设置属性需要把最新设置的属性删除,而重复设值是把已有的key值先删除(这个删除值不一定就是最先进入的值),所以需要区分。
他们说的都是片面的,这段是这个思路,如果我包含这个键的时候我删除再加进来就可以了,没有必要判断长度来删除其他的键,而不包含且长度达到最大的时候是需要移除一个的,所以直接
if containsKey:
del self[key]
print('set:', (key, value))
else:
if len(self) >= self._capacity:
last = self.popitem(last=False)
print('remove:', last)
print('add:', (key, value))
就可以了
- 1
viper1090
看了评论,大家对:
不是很理解: 其实我感觉是为了代码更安全更严谨吧,实际上如果只是实现FIFO,这些逻辑本身就是多余的。 直接用就可以了