如何基于自定义字典对职位头衔字符串列表进行排序?
职位头衔按指定优先级排序实现方案
问题背景
我们有一个定义高级职位优先级的字典,以及一份职位头衔列表,需要按照字典指定的优先级排序,未在字典中的头衔统一排在后面:
优先级字典:
{'ceo': 0, 'founder': 1, 'chairman': 2}
原始头衔列表:
['ceo', 'manager', 'founder', 'partner', 'chairman']
期望排序结果:
['ceo', 'founder', 'chairman', 'manager', 'partner']
实现方法
使用Python内置的sorted()函数,通过key参数自定义排序规则即可实现需求:
代码示例
# 定义优先级映射字典 priority_map = {'ceo': 0, 'founder': 1, 'chairman': 2} # 原始头衔列表 title_list = ['ceo', 'manager', 'founder', 'partner', 'chairman'] # 执行排序 sorted_titles = sorted(title_list, key=lambda x: priority_map.get(x, len(priority_map))) # 输出结果 print(sorted_titles) # 输出:['ceo', 'founder', 'chairman', 'manager', 'partner']
逻辑说明
priority_map.get(x, len(priority_map)):对每个头衔x,如果存在于优先级字典中,返回对应的优先级数值;如果不存在,返回字典的长度(这里是3,大于所有已定义的优先级0、1、2),确保未指定优先级的头衔排在后面。sorted()函数会根据key返回的数值从小到大排序,因此指定了优先级的头衔按顺序前置;未指定的头衔因key值相同,会保持它们在原列表中的相对顺序(sorted()是稳定排序算法)。
内容的提问来源于stack exchange,提问作者sima
相关产品推荐
相关产品推荐

