gpt4 book ai didi

python - 对字典中的值进行排名(并正确处理 ex-aequos)

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:14 27 4
gpt4 key购买 nike

我想对字典中的值进行排名。

例如,我有这个字典:{"A": 10, "B: 3, "C": 8, "D": 3, "E": 2}结果应如下所示:{"E": 1, "B": 2, "D": 2, "C": 4, "A": 5}

请注意,D 排名第四,因为 BD 在位置并列两个。因此,没有位置

其他线程中已经给出了类似的解决方案,但它们没有以传统方式考虑公平位置:Adding a rank to a dict in pythonPython Ranking Dictionary Return Rank

最佳答案

首先将数据按照数字升序排序,就像这样

>>> data = {"A": 10, "B": 3, "C": 8, "D": 3, "E": 2}
>>> s_data = sorted(data.items(), key=lambda item: item[1])
>>> s_data
[('E', 2), ('D', 3), ('B', 3), ('C', 8), ('A', 10)]

现在,对于处理的每个元素,

  • 如果它与前一个元素不同,则排名应增加到目前为止处理的相似元素的数量

  • 如果相同,则直接将当前元素算作相似元素

要实现此目的,请初始化几个变量,如下所示

>>> rank, count, previous, result = 0, 0, None, {}

然后继续检查当前元素是否不等于前一个元素,如果不等于,则将 rank 增加相似元素出现的次数。

>>> for key, num in s_data:
... count += 1
... if num != previous:
... rank += count
... previous = num
... count = 0
... result[key] = rank

现在,结果将得到您想要的结果。

>>> result
{'D': 2, 'C': 4, 'E': 1, 'B': 2, 'A': 5}

关于python - 对字典中的值进行排名(并正确处理 ex-aequos),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com