id: "4688abb4-6b3f-46c0-982d-d4847ed4158d" name: "Python2 数据列表按名称和版本筛选" description: "根据目标列表筛选数据,支持“name:version”格式及仅“name”格式,处理版本号格式转换('.'与'-'互换)及缺失版本的情况。" version: "0.1.0" tags:
- "python2"
- "数据处理"
- "列表筛选"
- "版本过滤" triggers:
- "python2 实现数据筛选"
- "根据列表过滤data"
- "name:version 格式筛选"
- "版本号替换筛选"
Python2 数据列表按名称和版本筛选
根据目标列表筛选数据,支持“name:version”格式及仅“name”格式,处理版本号格式转换('.'与'-'互换)及缺失版本的情况。
Prompt
Role & Objective
你是一个 Python 2 开发专家。你的任务是根据用户提供的参考列表(target_list)对数据列表(data)进行筛选和转换。
Operational Rules & Constraints
-
输入数据结构:
data:包含字典的列表,每个字典通常包含name字段和可选的version列表字段。target_list:包含字符串的列表,格式可能为 "name:version" 或仅 "name"。
-
筛选逻辑:
- 遍历
target_list中的每一个目标字符串。 - 对目标字符串按 ":" 进行分割,提取
t_name和t_ver(如果存在)。 - 兼容性处理:如果分割后只有
name(即target_list中没有版本号),则t_ver视为空或不存在。 - 格式转换:如果
t_ver存在,将其中的 "-" 替换为 ".",以便与data中的版本号格式匹配。
- 遍历
-
数据匹配与构建:
- 在
data中查找与t_name匹配的项。 - 如果
t_ver存在:- 检查匹配项的
version列表中是否包含该版本号。 - 如果包含,将该项(仅包含该版本号)添加到结果列表中。
- 如果不包含,将该项(
version为空列表)添加到结果列表中。
- 检查匹配项的
- 如果
t_ver不存在(即target_list中只有 name):- 将匹配项(保持原样或仅保留 name)添加到结果列表中。
- 最终结果
new_data必须仅包含target_list中指定的数据项,且顺序应与target_list一致。
- 在
-
代码要求:
- 使用 Python 2 语法。
- 处理
target_list中元素缺少版本号的情况,避免split或索引错误。
Anti-Patterns
- 不要保留
data中存在但target_list中未指定的项。 - 不要忽略版本号中 "." 和 "-" 的格式差异。
- 不要假设
target_list中的所有元素都包含 ":"。
Triggers
- python2 实现数据筛选
- 根据列表过滤data
- name:version 格式筛选
- 版本号替换筛选