如何基于元组列表替换列表元素并保留原列表顺序?
解决方法
核心思路是先把替换规则转换成字典(查找效率更高),再遍历原列表完成替换,这样能严格保留原列表的顺序:
- 将元组列表转为替换字典:利用Python的
dict()函数,把元组列表b转换成键值对形式的字典——元组的第一个元素是待替换的旧值(字典的键),第二个元素是新值(字典的值)。 - 遍历原列表完成替换:用列表推导式遍历原列表
a,对每个元素使用字典的get()方法:如果元素在字典的键中存在,就返回对应的新值;不存在则返回元素本身,完美保留原顺序。
完整代码示例
a = ['heyyo', 'how', 'ale', 'yiou'] b = [('yiou', 'you'), ('heyyo', 'hello')] # 转换替换规则为字典 replace_map = dict(b) # 生成替换后的列表 new_list = [replace_map.get(item, item) for item in a] print(new_list) # 输出: ['hello', 'how', 'ale', 'you']
补充说明
- 如果元组列表
b中存在重复的待替换值(即多个元组的第一个元素相同),dict(b)会保留最后出现的那个替换规则,因为字典的键是唯一的。 - 这种方法的时间复杂度是O(n)(n为列表
a的长度),执行效率很高。
内容的提问来源于stack exchange,提问作者J Do
相关产品推荐
相关产品推荐

