首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从哪里开始: Python脚本允许用户通过比较来对元素进行排名

从哪里开始: Python脚本允许用户通过比较来对元素进行排名
EN

Stack Overflow用户
提问于 2019-12-09 12:21:23
回答 2查看 63关注 0票数 1

在我工作的地方,我们会对候选人进行简历审查。我希望在评审时尽可能做到公正,但我不禁觉得,我只是将每一份简历与我头脑中任意一份简历进行排序,看看摆在我面前的那份简历离我的理想有多近。

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

1)向用户显示两份简历

2)用户选择哪个更好

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

4)重复步骤1-3

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

希望这可以消除系统中的偏见,使简历审查更加公平。我相信这是我们都想要的。

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

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

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

感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2019-12-09 12:45:36

你有一大堆关于如何实现它的选择,但我认为基本上你会想要实现一个排序算法,让用户在项目之间进行比较。

这里有一个冒泡排序的例子,它很容易实现,但并不是最优的。选择合并排序将最小化用户必须执行的比较次数。

代码语言:javascript
复制
def bubble_sort_resumes(resume_list):
    n = len(resume_list)
    for i in range(n):
        for j in range(n-i-1):
            if user_decides_if_the_first_resume_is_better(resume_list[j], resume_list[j+1]):
                resume_list[j], resume_list[j+1] = resume_list[j+1], resume_list[j]

def user_decides_if_the_first_resume_is_better(resume1, resume2):
    # todo: implement me
    # return True if resume1 is better, False if resume2 is better

我并不特别推荐你选择冒泡排序而不是其他排序算法,它很简单。

这里还有一个基本的假设,即简历可以被评估为一个变量,但这可能不是真的--人们可能在某些领域有优势,在其他领域有劣势。但为了简单起见,听起来你很乐意做这样的假设。

你可能会遇到的一个问题是,如果用户说(或会说):简历1比2更好,简历2比3更好,简历3比1更好,那么就不清楚该如何处理这种情况。

票数 0
EN

Stack Overflow用户

发布于 2019-12-09 13:13:41

我认为你需要这个软件有一个投票系统,这样它就可以计算出你选择简历的次数。Dictionaries是最好的工具。

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

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

2-将列表转换为字典。字典键将是简历标题,它们的值在开始时将为0。最终,这些值将重新选择每份简历收到的投票数量。

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

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

代码语言:javascript
复制
#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次,我最终得到一个如下所示的字典

代码语言:javascript
复制
{'1.pdf': 3, '2.pdf': 1, '3.pdf': 2}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59242507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档