如何用Python创建列表元素与前置Title的连接关系字典?
实现非Title元素与前置有效Title的索引映射
输入列表
['Title', 'Text', 'Title', 'Title', 'Text', 'Title', 'Text', 'List', 'Text', 'Title', 'Text', 'Text']
需求说明
需要生成一个字典,规则如下:
- 每个非
Title元素的索引作为键,对应值是它最近的有效前置Title的索引 - 「有效前置Title」指的是:该Title后面没有直接紧跟另一个Title;若某个Title后紧接着另一个Title,这个Title不关联任何元素
预期输出
{1:0,4:3,6:5,7:5,8:5,10:9,11:9}
实现方案(Python)
通过一次遍历即可完成,核心是跟踪当前有效的前置Title索引,代码如下:
lst = ['Title', 'Text', 'Title', 'Title', 'Text', 'Title', 'Text', 'List', 'Text', 'Title', 'Text', 'Text'] result = {} current_valid_title = None for idx, item in enumerate(lst): if item == 'Title': # 判断当前Title是否有效:要么是最后一个元素,要么下一个元素不是Title if idx == len(lst) - 1 or lst[idx + 1] != 'Title': current_valid_title = idx else: # 非Title元素关联当前有效Title的索引 if current_valid_title is not None: result[idx] = current_valid_title print(result)
代码解释
- 用
current_valid_title变量记录当前有效的前置Title索引,初始值为None - 遍历列表时:
- 遇到
Title元素,检查它的下一个元素(若存在)是否不是Title,满足条件则更新current_valid_title为当前索引(标记为有效Title) - 遇到非
Title元素,只要当前有有效Title索引,就将该元素的索引与有效Title索引存入结果字典
- 遇到
- 遍历结束后,
result就是符合要求的映射字典
内容的提问来源于stack exchange,提问作者Talha Anwar
相关产品推荐
相关产品推荐

