(我很抱歉,这个问题以前的版本显示了我需要修复的错误功能,这个问题已经得到了纠正,我希望这个问题现在变得更有意义。)
我有一个带有分数的对象列表,我试图根据这些分数给它们分配等级。下面是我如何输出我的数据。在
sorted_scores = [
('Apolo Ohno', 0),
('Shanie Davis', -1),
('Bodie Miller', -2),
('Lindsay Vohn', -3),
('Shawn White', -3),
('Bryan Veloso', -4)
]
我有领带。现在,为上面的对象指定位置的函数是一个简单的for循环,它只将i
的值指定为对象的最终位置。在
很明显这会回来:
positions = {
'Apolo Ohno': 1,
'Shanie Davis': 2,
'Bodie Miller': 3,
'Lindsay Vohn': 4,
'Shawn White': 5,
'Bryan Veloso': 6
}
希望这有点道理。问题的关键是这个循环。更有意义的是,如果它像这样返回它们:
positions = {
'Apolo Ohno': 1,
'Shanie Davis': 2,
'Bodie Miller': 3,
'Lindsay Vohn': 4, # Same value.
'Shawn White': 4, # Same value.
'Bryan Veloso': 6
}
我应该如何编辑上面的函数来做到这一点,记住我可以在任何给定的时间有任何数量的领带,这取决于我的会员中有多少人对所说的对象进行排名?最高的等级应该是1,所以可以这样显示:<rank>/<total # of people>
提前谢谢。:)
==规范变更/澄清后更新===
结果:
^{pr2}$==原始提交===
这段代码假设您真的希望最高的分数获得排名1,而不是最低分数获得排名1(或0!)。在
输出:
记住,dicts是无序的,所以要按位置顺序迭代,您需要这样做
^{pr2}$这样做的方法不是计算元素的位置是任意的序列,而是计算有多少其他元素有更好的分数。在
编辑:
根据大众的需求,O(n)ed和其他一切:
相关问题 更多 >
编程相关推荐