首页 > 解决方案 > 从哪里开始:允许用户通过比较对元素进行排名的 Python 脚本

问题描述

在我工作的地方,我们会对候选人进行简历审查。我想在审查时尽可能公平,但我不禁觉得我只是将每份简历与我脑海中的任意一份进行排名,看看我面前的一份与我的简历有多接近理想的。

为了解决这个问题,我正在尝试编写一个代码

1) 向用户显示两份简历

2)用户选择哪个更好

3)程序说,“这份简历在排名中总是高于其他”

4) 重复步骤 1-3

5) 最终,每份简历都被排序到大致正确的位置(不一定是100%完美),然后继续审阅。

希望这可以消除系统中的一些偏见,并使简历审查更加公平。我敢肯定这是我们都想要的。

我的问题是我不确定从哪里开始。我可能没有使用正确的搜索词,但每当我寻找“如何使用 python 手动排序”或“选择一个元素并在 python 中排序”时,什么都没有出现。

我现在并不担心界面部分:我只想在后端开始运行,以便稍后添加 UI。

至于我在 Python 方面的背景,我已经掌握了基础知识,我可以学习任何我需要学习的东西(我已经完成了套利编码、硒的东西、抓取和各种生物信息学的东西)。称之为中级编码器的开始阶段。

谢谢你的帮助!

标签: pythonsorting

解决方案


我认为您需要该软件具有投票系统,以便它可以计算您选择简历的次数。字典是最好的工具。

假设我在一个文件夹中有 3 份简历。简历标题从 1.pdf 到 3.pdf

1 - 使用os.listdir("PATH/TO/FOLDER/)这将在列表中列出所有简历的标题。

2 - 将列表转换为字典。字典键将是简历标题,它们的值将在开头为 0。最终,这些值将反映每个简历收到的投票数。

3 - 创建一个嵌套的 for 循环来比较简历。

4 - 每次用户选择一个简历而不是另一个,简历的值将增加 1。

#resumes = os.list(Path/To/Folder)

resumes = ["1.pdf","2.pdf", "3.pdf"]

resumeDictionary = { i : 0 for i in resumes } #Convert list to dictionary and give all keys a value 0

resumeRecord=[] #List to keep a record of resume comparison combinations

for resume in resumes:
    for Anotherresume in resumes:
        if Anotherresume is resume or [resume,Anotherresume] in resumeRecord or [Anotherresume,resume] in resumeRecord: #Prevent duplicate/repeated resume comparisons
            continue
        userInput = input("Which resume do you prefer? Press 1 or 2\n[1] " + resume + "\n" + "[2] " + Anotherresume + "\n")
        if int(userInput) == 1:
            resumeDictionary[resume] += 1
        elif int(userInput) == 2:
            resumeDictionary[Anotherresume] += 1
        resumeRecord.append([resume,Anotherresume]) #Record combination

print(resumeDictionary)

如果我运行上面的代码并选择 resume "1.pdf" 3 次,我最终会得到这样的字典

{'1.pdf': 3, '2.pdf': 1, '3.pdf': 2}

推荐阅读