python - 我如何编写一个函数来查找数字列表的分数排名?
问题描述
我正在尝试用 Python 编写代码来为给定的分数创建分数排名列表。分数排名基本如下:
我们有一个数字列表x = [4,4,10,4,10,2,4,1,1,2]
首先,我们需要按升序对列表进行排序。我将为此使用插入排序,我已经编写了这部分代码。
现在我们有了排序列表x = [1, 1, 2, 2, 4, 4, 4, 4, 10, 10]
。该列表有 10 个元素,我们需要将其与前 10 个自然数的列表进行比较n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
对于 x 中的每个元素,我们分配一个值。请注意,数字 1 出现在位置 1 和 2。因此,数字 1 的排名为 (1 + 2) / 2 = 1.5。
数字 2 出现在位置 3 和 4,因此它的排名为 (3 + 4) / 2 = 3.5。
数字 4 出现在位置 5、6、7 和 8,因此它获得排名 (5 + 6 + 7 + 8) / 4 = 6.5
数字 10 出现在位置 9 和 10,因此它获得排名 (9 + 10) / 2 = 9.5
在这个过程的最后,我们需要一个新的排名列表r = [1.5, 1.5, 3.5, 3.5, 6.5, 6.5, 6.5, 6.5, 9.5, 9.5]
我不想要一个完整的解决方案,我想要一些技巧来指导我,同时写下代码。
我正在尝试使用该for
函数使用原始列表中的元素创建一个新列表,但我的第一次尝试失败了。我试图至少让第一个元素正确,但它没有按预期工作:
# Suppose the list is already sorted.
def ranking(x):
l = len(x)
for ele in range(1, l):
t = x[ele-1]
m = x.count(t)
i = 0
sum = 0
while i < m: # my intention was to get right at least the rank of the first item of the list
sum = sum + 1
i = i + 1
x[ele] = sum/t
return x
关于如何解决这个问题的任何想法?
解决方案
@VictorPaesPlinio-您是否可以尝试此示例代码来解决该问题:(这是部分解决方案,数据聚合是否有效,最后一部分留给put the output
您自己练习)。
from collections import defaultdict
x = [4, 4, 10, 4, 10, 2, 4, 1, 1, 2]
x.sort()
print(x)
lst = list(range(1, len(x)+1))
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ranking = defaultdict(list)
for idx, num in enumerate(x, 1):
print(idx, num)
ranking[num].append(idx)
print(ranking)
'''defaultdict(<class 'list'>, {1: [1, 2], 2: [3, 4],
4: [5, 6, 7, 8], 10: [9, 10]})
'''
r = []
# r = [1.5, 1.5, 3.5, 3.5, 6.5, 6.5, 6.5, 6.5, 9.5, 9.5]
# 1 1 2 2 4 4 4 4 10 10
for key, values in ranking.items():
# key is the number, values in the list()
print(key, values, sum(values))
输出:
1 [1, 2] 3
2 [3, 4] 7
4 [5, 6, 7, 8] 26
10 [9, 10] 19 # then you can do the final outputs part...
推荐阅读
- excel - Excel:屏幕截图自动粘贴到另一个工作表 VBA
- python - Django:子类化 UserCreationForm:没有 get_user() 方法?
- ios - 如何以编程方式使 TableViewCell 在灰色背景下显示为一张纸或“标签”?
- git - `HEAD` 是作为文件实现的吗?
- git - core.excludesfile 中的 *war 导致 git add 忽略 *.p12 文件
- node.js - 收到“ReferenceError: mongoose not defined”,尽管在 app.js 中定义并通过 npm 安装
- java - 这个算法是 O(n^2) 吗?
- delphi - OpenGL Delphi 中的错误渲染
- python - 运行 Pycharm 远程调试会话时无法连接到容器化的 Django Web 服务器
- python-3.x - Python-Docx 缺少默认模板