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

Python字典中如何校验各键对应值恰好包含1个S和1个F

问题原因分析

你原有代码存在以下问题:

  • 正则逻辑不符合需求:
    • r"[F]{1}" 只能判断是否存在至少1个F,无法校验是否恰好只有1个
    • r"[S].{1}" 匹配规则是S后面跟随任意1个字符,和判断S的数量完全无关
  • 只做了存在性校验,没有实现“恰好1个”的数量校验逻辑

最优解决方案(无需正则,性能更高易读)

直接用列表内置的count()方法统计字符出现次数即可:

d = {128: ['S', 'S', 'O', 'F'], 512: ['S', 'F']}
for key, val in d.items():
    if val.count('F') != 1 or val.count('S') != 1:
        print(f"There is no start or end stop for the line {key}.")

运行后会正确输出There is no start or end stop for the line 128.,完全符合预期。

正则实现版本(仅作参考,更推荐上方方案)

如果一定要用正则实现,需要调整为匹配字符恰好出现1次的规则:

import re
d = {128: ['S', 'S', 'O', 'F'], 512: ['S', 'F']}
for key, val in d.items():
    s = "".join(val)
    # ^[^F]*F[^F]*$ 表示整个字符串中F恰好出现1次
    if not re.search(r"^[^F]*F[^F]*$", s) or not re.search(r"^[^S]*S[^S]*$", s):
        print(f"There is no start or end stop for the line {key}.")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:03