Python中将嵌套列表指定位置值替换为字典映射值的更优实现方法
高效Pythonic实现方案
字典的查询时间复杂度为O(1),因此仅需遍历一次my_list即可完成全部替换,时间复杂度为O(n)(n为my_list的长度),远优于原嵌套循环的O(m*n)(m为字典键的数量)。
原地修改版本(直接修改原列表)
如果可以直接修改原有my_list,用以下写法即可:
for item in my_list: # 若能确保所有子列表第2个元素都在字典键中,可简化为 item[1] = my_dict[item[1]] item[1] = my_dict.get(item[1], item[1])
生成新列表版本(不改动原列表)
如果需要保留原列表数据,用列表推导式的写法更简洁:
new_list = [ [item[0], my_dict.get(item[1], item[1]), item[2]] for item in my_list ]
额外优化说明
你原有代码中的replace方法存在隐藏逻辑风险:如果字典存在两个键为包含关系(比如同时有012和0123两个键),会出现意外的子串替换问题。而直接按完整值匹配字典的写法完全规避了该问题,逻辑更严谨。
内容的提问来源于stack exchange,提问作者bhdrozgn
相关产品推荐
相关产品推荐

