You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从键为int值为collections.deque的字典中提取非空deque条目

解决方案

你可以直接用字典推导式来实现,而且完全不需要遍历deque的元素——因为Python里的collections.deque支持直接通过布尔判断快速确定是否为空,这个判断是O(1)时间复杂度的底层操作,不会遍历队列内容。

具体代码如下:

from collections import deque

# 示例dqs字典
dqs = {
    1: deque([1,2,3]),
    2: deque(),
    3: deque(['a','b']),
    4: deque()
}

# 过滤出非空deque的条目
filtered_dqs = {k: v for k, v in dqs.items() if v}

原理说明

当你写if v的时候,Python会自动调用deque的__bool__魔法方法,这个方法内部直接检查队列的长度是否大于0。而deque的长度是由底层维护的计数器记录的,不需要遍历任何元素就能获取,效率很高。

你也可以写成if len(v) != 0,效果完全一样,但直接用if v更简洁。

内容的提问来源于stack exchange,提问作者roulette01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:44:56