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

Python如何按规则筛选元组列表,同键优先保留含Yes的项

实现方案

思路

用字典做中间存储,利用字典键唯一的特性对应元组的首元素,遍历所有元组时遵循「Yes优先级高于No」的规则更新每个键对应的值,最后把字典的键值对转成元组列表即可,Python3.7+版本默认会保留首元素的首次出现顺序,和需求示例的输出顺序一致。

代码实现

my_list = [('a','Yes'),('a','No'),('b','No'),('b','No'),('c','No'),('c','Yes')]
temp_dict = {}
for key, val in my_list:
    # 仅当键不存在,或当前值为Yes优先级更高时更新
    if key not in temp_dict or val == 'Yes':
        temp_dict[key] = val
# 转换为目标元组列表格式
new_list = list(temp_dict.items())
print(new_list) # 输出 [('a', 'Yes'), ('b', 'No'), ('c', 'Yes')]

原代码问题说明

你原先的写法只筛选值为Yes的元组,没有处理所有值都为No的首元素对应的元组,所以会丢失首元素为b的项。上面的写法会先把所有首次出现的首元素都存入字典,后续遇到同首元素的Yes项就覆盖已存的No值,完全匹配需求规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:27:04