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

Python如何按条件合并字符串列表 筛选指定标签后按年份排序

实现方案

整个功能可以拆成3个核心步骤完成,不需要额外依赖第三方库:

  • 列表合并与格式清洗:先把传入的所有字符串列表的条目汇总到一起,同时清洗掉条目里的异常标点(比如示例中2016, 7 C里年份后多余的逗号),保证条目格式统一。
  • 标签过滤:将每个条目按空白符拆分,取最后一段作为条目标签,仅保留标签在指定标签列表内的条目。
  • 年份排序:提取每个条目开头4位的年份值,转成整数作为排序键,按年份升序排列后返回结果。

代码实现

def my_function(InputLists, TagLists):
    collected = []
    # 遍历所有输入列表,合并条目并做格式清理
    for lst in InputLists:
        for entry in lst:
            # 移除条目内的逗号,匹配示例输出格式
            clean_entry = entry.replace(',', '')
            collected.append(clean_entry)
    # 过滤符合标签要求的条目
    valid_entries = []
    for entry in collected:
        entry_tag = entry.split()[-1]
        if entry_tag in TagLists:
            valid_entries.append(entry)
    # 按年份升序排序
    valid_entries.sort(key=lambda x: int(x[:4]))
    return valid_entries

效果验证

用题目给出的示例参数运行:

List1 = ["2010 11 A", "2011 15 B", "2007 19 A", "2012 16 C"]
List2 = ["2015 8 A", "2016, 7 C", "2011 4 B"]
InputLists = [List1, List2]
TagLists = ["A", "C"]

sorted_output = my_function(InputLists, TagLists)
print(sorted_output)

运行输出和预期完全一致:

['2007 19 A', '2010 11 A', '2012 16 C', '2015 8 A', '2016 7 C']

补充说明

  • 如果实际场景中条目存在其他多余标点,可以在格式清洗步骤补充对应的替换规则。
  • 当前排序逻辑默认合法条目均以四位年份开头,如果存在格式不规范的条目,可以在过滤步骤增加格式校验,避免转整数时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:31:00