基于元素嵌套结构重构对应索引的嵌套列表
问题描述
我有一个元素的嵌套列表:
elements = [['A', 'B'],['B','C'],['D','E','F']]
同时有一组索引数据,其中元素的有序列表与索引按顺序一一对应:
ordered_elements = ['A','B','C', 'D', 'E', 'F'] index = [308,302,303,405,506,609]
需要依据elements的嵌套结构,重构出索引的嵌套列表,预期输出如下:
out = [[308,302],[302,303],[405,506,609]]
解决方案
思路
先建立元素与对应索引的映射字典,通过字典快速查找每个元素的索引值,再按照原嵌套列表的结构替换元素为对应索引即可。
代码实现
# 构建元素到索引的映射字典 element_index_map = dict(zip(ordered_elements, index)) # 按原嵌套结构生成索引列表 out = [[element_index_map[elem] for elem in sublist] for sublist in elements] # 输出结果 print(out)
说明
- 使用
zip()将ordered_elements和index配对,再转换为字典,实现元素到索引的O(1)快速查找; - 两层列表推导式,外层遍历
elements的每个子列表,内层遍历子列表中的每个元素,替换为对应的索引值,最终生成目标嵌套列表。
内容的提问来源于stack exchange,提问作者ASking
相关产品推荐
相关产品推荐

