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
相关产品推荐
相关产品推荐

