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

使用推导式校验集合元素存在性时断言失败,求排查

问题分析与解决

你的推导式确实没实现预期功能,核心问题是逻辑判断方向搞反了:

当前代码里的pass1_task in (task for task in all_downstream_task_for_dl_task),本质是判断**pass1_task是否完全等于集合中的某个元素**,但你实际需要的是判断集合中的某个元素是否包含pass1_task。

你的集合元素'first_cpp_pass.euronext3-equities_nl_A_3'和'first_cpp_pass'不是完全相等的,所以当前断言会失败。

修正后的代码

你需要把判断逻辑调整为检查目标字符串是否是集合元素的子串,以下两种写法都可以:

写法一:保持原有遍历顺序

assert any(pass1_task in task for task in all_downstream_task_for_dl_task for pass1_task in {'first_pass', 'first_cpp_pass'}), 'the test failed unexpectedly'

写法二:更直观的嵌套判断

target_passes = {'first_pass', 'first_cpp_pass'}
assert any(any(target in task for target in target_passes) for task in all_downstream_task_for_dl_task), 'the test failed unexpectedly'

这两种写法都会检查:只要all_downstream_task_for_dl_task中有任意一个元素包含'first_pass'或'first_cpp_pass'中的任意一个,断言就会通过,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:03:21