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

Python列表筛选匹配项时如何将精确匹配结果排在首位

解决方案

不需要使用正则表达式,直接用Python内置的sorted函数自定义排序权重即可实现,代码非常简洁。

实现逻辑:给每个匹配到的元素分配不同的排序优先级:

  • 完全匹配关键词的优先级最高,权重设为0
  • 关键词作为前缀的匹配优先级次之,权重设为1
  • 仅包含关键词的匹配优先级最低,权重设为2

sorted函数会按照权重从小到大排序,即可得到符合要求的结果。

示例代码

a = ['mnoabc', 'defabc', 'abc', 'abcdef', 'ijk', 'lmn']
keyword = 'abc'

# 先筛选出所有包含关键词的元素
matched_list = [item for item in a if keyword in item]
# 按自定义规则排序
sorted_result = sorted(matched_list, key=lambda x: (
    0 if x == keyword else
    1 if x.startswith(keyword) else
    2
))

print(sorted_result)

输出结果

['abc', 'abcdef', 'mnoabc', 'defabc']

如果需要对同优先级的元素额外做字典序或者长度排序,只要在key的元组里加对应的规则即可,比如要同优先级按字符串长度升序排列,把key改成lambda x: (0 if x == keyword else 1 if x.startswith(keyword) else 2, len(x))就行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:48:04