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

如何验证字符串列表是否符合自定义序列['PRE','IMP','POST','BO']的排序规则

自定义序列校验实现方案

需求说明

需要校验字符串列表是否严格遵循自定义顺序 ['PRE', 'IMP', 'POST', 'BO'],列表中元素允许重复,但不能出现顺序颠倒(例如IMP不能出现在PRE之前,PRE不能出现在IMP之后等)。

  • 符合要求的示例列表:['PRE', 'PRE', 'PRE','IMP', 'IMP','POST','BO', 'BO']
  • 不符合要求的示例列表:['IMP', 'PRE', 'PRE','IMP', 'IMP','POST','BO', 'BO']

实现思路

  1. 给自定义顺序的每个元素分配优先级索引,方便后续比较
  2. 遍历目标列表,跟踪当前已经出现过的最高优先级
  3. 若遍历过程中出现优先级低于当前最高值的元素,直接判定顺序错误

代码实现

def is_correct_order(lst, custom_order):
    # 建立元素到优先级的映射
    order_map = {item: idx for idx, item in enumerate(custom_order)}
    current_max_priority = -1
    for item in lst:
        # 处理不在自定义序列中的元素(若不需要可删除此判断)
        if item not in order_map:
            return False
        current_priority = order_map[item]
        # 若当前元素优先级低于已出现的最高优先级,说明顺序错误
        if current_priority < current_max_priority:
            return False
        # 更新当前最高优先级
        if current_priority > current_max_priority:
            current_max_priority = current_priority
    return True

# 测试示例
custom_order = ['PRE', 'IMP', 'POST', 'BO']
correct_list = ['PRE', 'PRE', 'PRE','IMP', 'IMP','POST','BO', 'BO']
incorrect_list = ['IMP', 'PRE', 'PRE','IMP', 'IMP','POST','BO', 'BO']

# 验证正确列表
print("correct" if is_correct_order(correct_list, custom_order) else "incorrect")
# 验证错误列表
print("correct" if is_correct_order(incorrect_list, custom_order) else "incorrect")

代码说明

  • order_map 字典将自定义序列中的元素映射为对应的索引值,作为优先级判断依据
  • 遍历列表时,每个元素的优先级必须大于等于之前出现过的最高优先级,否则直接返回False
  • 若列表中存在自定义序列外的元素,默认判定为错误(可根据需求移除该判断逻辑)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:20:13