Python 列表中每个项目的优先排序

Python 列表中每个项目的优先排序,python,ranking,preference,Python,Ranking,Preference,我已经离开Python一段时间了,请原谅这个宽泛/基本的问题 假设我有一个项目列表,它可以是任何东西 我想写一个程序,一次打印两个,每两个的可能组合,让用户选择一个偏好/赢家。然后在最后打印完整的列表,每个列表都带有某种数字首选项值。我对等级或偏好的数学知识还不够,甚至不知道这个数字会是什么样子 基本上我从一开始就有写作障碍。关于如何构建这个或我应该研究什么的任何建议?一种非常简单的方法如下: initialize a scoring_list for every element in a l

我已经离开Python一段时间了,请原谅这个宽泛/基本的问题

假设我有一个项目列表,它可以是任何东西

我想写一个程序,一次打印两个,每两个的可能组合,让用户选择一个偏好/赢家。然后在最后打印完整的列表,每个列表都带有某种数字首选项值。我对等级或偏好的数学知识还不够,甚至不知道这个数字会是什么样子


基本上我从一开始就有写作障碍。关于如何构建这个或我应该研究什么的任何建议?

一种非常简单的方法如下:

initialize a scoring_list

for every element in a list
    for every element in a list

        while valid input:
            ask the question via raw_input()

            if input matches the first item
                store winner in some sort of scoring list
                tell program input is valid

            else if input matches the second item
                store winner in some sort of scoring list
                tell program input is valid

            else
                tell program input is not valid and repeat question

do some math with the scoring_list (e.g. normalization)
print( scoring_list )

显然,很多细节都是故意忽略的,因为这取决于编程风格和目标。例如,最好通过索引执行循环,这样您就可以拥有一个索引与原始列表匹配的评分列表。通过这种结构,你可以创造性地使用比直接计数更严格的统计方法来跟踪“排名”。

了解数据的作用/代表将是帮助我们简化答案的良好开端,然后我假设可能使用
heapq
。数据保存在两个长度元组中,其中第一个元素是权重,第二个元素是数据本身。应该是这样的:
[(0.0,数据对象01),…,(1.0,数据对象0n)]
。或者只需
排序
和一些键函数即可对数据进行排序/称重。