如何在Python中按自定义字符顺序对字符列表排序?
按自定义字符列表排序Python列表
解法思路
要实现按指定的自定义顺序排序,核心是给每个待排序元素分配对应自定义顺序的「权重值」——也就是该元素在custom_sort_order列表中的索引位置。先把custom_sort_order转换成元素到索引的字典,快速查找每个元素的权重,再用sorted()函数的key参数指定这个权重进行排序即可。
代码实现
L1 = ['1', '3', '4'] L2 = ['2', '3', '5'] custom_sort_order = ['2', '5', '3', '1', '4'] # 转换为元素到索引的字典,用于快速获取排序权重 sort_weight = {item: idx for idx, item in enumerate(custom_sort_order)} # 按自定义顺序排序 L1_result = sorted(L1, key=lambda x: sort_weight[x]) L2_result = sorted(L2, key=lambda x: sort_weight[x]) print(L1_result) # 输出: ['3', '1', '4'] print(L2_result) # 输出: ['2', '5', '3']
补充说明
sort_weight字典将custom_sort_order中的元素映射到对应索引,比如'2'对应0、'5'对应1,以此类推,排序时会按索引从小到大排列元素。- 如果待排序列表中存在
custom_sort_order未包含的元素,可以用sort_weight.get(x, 999)这类写法设置默认权重(示例中999可替换为任意大数值,让这类元素排到末尾),避免触发KeyError。
内容的提问来源于stack exchange,提问作者Abhishek Arora
相关产品推荐
相关产品推荐

