假设我有一个列表[102, 97, 116, 101]
,我希望在保留列表中值的位置时按数字对其值进行排名,如[3, 1, 4, 2]
中所示。我该怎么做呢?
答案 0 :(得分:3)
将查找键入的索引输入排序到现有的CollectionView
:
list
使用>>> mylist = [102, 97, 116, 101]
>>> ranks = sorted(range(1, len(mylist)+1), key=lambda i: mylist[i-1], reverse=True)
>>> print(ranks)
[3, 1, 4, 2]
作为索引是因为你使用了1-up rank(而Python使用0-up索引)。
答案 1 :(得分:0)
以下是唯一数字列表的可能方式:
sorted_list
result
sorted_list
列表中每个数字的索引。result
列表。给出您的示例数据:
input_list = [102, 97, 116, 101]
sorted_list = [97, 101, 102, 116]
result = [1, 3, 0, 2]
如果您希望结果从1
而不是1
开始,请将<{1}}添加到索引。
实现:
0
答案 2 :(得分:0)
我们可以对未排序列表中的项目索引进行排序和获取:
sorted_list = sorted([102, 97, 116, 101])
[sorted_list.index(e) for i, e in enumerate([102, 97, 116, 101])]
<强>输出强>
[2, 0, 3, 1]
如果您想从1开始编制索引,只需添加一个:
[sorted_list.index(e)+1 for i, e in enumerate([102, 97, 116, 101])]
<强>输出强>
[3, 1, 4, 2]