Rod*_*phe 1 python list ranking python-2.7
我需要将rank归因于列表的元素,同时确保绑定元素获得相同的排名.
例如:
data = [[1],[3],[2],[2]]
c = 0
for i in sorted(data, reverse=True):
i.append(c+1)
c += 1
print data
Run Code Online (Sandbox Code Playgroud)
收益:
[[1, 4], [3, 1], [2, 2], [2, 3]]
Run Code Online (Sandbox Code Playgroud)
排名附加到分数的位置.
我需要更改为这个简单的代码,而不是获取:
[[1, 3], [3, 1], [2, 2], [2, 2]]
Run Code Online (Sandbox Code Playgroud)
得分为2的元素被绑定并且两者都获得第二名,而前面第四名的1被提升到第三名?
使用itertools.groupby,enumerate:
>>> from itertools import groupby
>>> data = [[1],[3],[2],[2]]
>>> sorted_data = sorted(data, reverse=True)
>>> for rank, (_, grp) in enumerate(groupby(sorted_data, key=lambda xs: xs[0]), 1):
... for x in grp:
... x.append(rank)
...
>>> print data
[[1, 3], [3, 1], [2, 2], [2, 2]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |