Python中能否用单条语句实现字典递减及条件删除?
问题解答
针对原代码的简洁替代写法
你可以用Python 3.8及以上版本支持的**海象运算符:=**把操作合并成更紧凑的组合语句:
if (dct[k] := dct[k] - 1) == 0: del dct[k]
这条语句会先完成dct[k] -= 1的操作,同时将计算后的新值用于条件判断,一旦新值等于0就删除键k,和原代码逻辑完全一致,且结构更紧凑。
针对任意下限的元素删除
如果要实现“元素值低于设定下限则删除”的逻辑,只需要修改判断条件即可,同样能用海象运算符简化:
假设你设定的下限为lower_bound,比如要删除值小于-2的元素,代码可以写成:
lower_bound = -2 if (dct[k] := dct[k] - 1) < lower_bound: del dct[k]
如果需求是“值小于等于下限则删除”,把<改成<=就行,完全适配任意自定义的下限规则。
另外,因为你用的是defaultdict(int),当键k不存在时,dct[k]会自动初始化为0,减1后变为-1,这时候会按照你设定的下限条件决定是否删除该键。
内容的提问来源于stack exchange,提问作者Qiang Li
相关产品推荐
相关产品推荐

