如何基于Python列表中重复SYSCode的索引提取AttributeValue生成新列表
Python列表提取指定AttributeValue值方案
通用实现(结构有变动也兼容)
核心逻辑是先定位所有SYSCode的索引,再取索引+2位置的元素,用列表推导式一行即可实现:
# 定义原始列表 original_list = ['', 'tenantspace', 'SYSCode', 'CodeName', 'AttributeValue2', 'AttrDate', '', 'tenantspace', 'SYSCode', 'CodeName', 'AttributeValue2', 'AttrDate', '', 'tenantspace', 'SYSCode', 'CodeName', 'AttributeValue3', 'AttrDate', '', 'tenantspace', 'SYSCode', 'CodeName', 'AttributeValue4', 'AttrDate'] # 提取目标值 result = [original_list[i + 2] for i, val in enumerate(original_list) if val == 'SYSCode']
运行后result输出为:['AttributeValue2', 'AttributeValue2', 'AttributeValue3', 'AttributeValue4'],和需求的结构完全匹配,若需调整元素值可后续自行修改。
固定结构优化实现(效率更高)
因为每个重复片段固定长度为6,AttributeValue固定在每个片段的第5位(索引从0计数为4),可以直接按步长取值:
result = [original_list[i] for i in range(4, len(original_list), 6)]
该方案不需要遍历全列表匹配固定值,运行效率更高,仅适合列表结构完全固定无变化的场景。
内容的提问来源于stack exchange,提问作者Sidd
相关产品推荐
相关产品推荐

