2017-01-24 44 views
-2

大小排名值说我的python有一个列表:Python的 - 根据在另一个数组

numArray = [3.7, 1, 7.2, 5] 

而且我希望创建一个有它numArray中的对应元素的等级另一个列表。它想:

rank = [3,4,1,2] 

3.7是列表中的第三大数目,所以它具有3.这是一个等级为数组中的每一个元素都做了。假设数组只包含数值而不是字符串或任何其他数据类型。

我的思维过程现在的问题是:

1)中的元素复制到另一个阵列

2)它们归类到使用list.sort() - 我现在有值从最小到最大

我现在的问题是,我不能根据排序列表加入元素排名

谢谢!

+0

你能证明*任何*努力解决这个问题吗? –

+0

欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。 [在主题](http://stackoverflow.com/help/on-topic)和[如何提问](http://stackoverflow.com/help/how-to-ask)适用于此处。 StackOverflow不是一个编码或教程服务。 – Prune

+0

如果一个列表被排序,它的“排名”将由该值的索引决定,所以你可以使用'.index'方法,假设没有重复。你遇到的实际问题是什么? –

回答

1

不干净/ “Python化” 解决方案,但在此之前,它应该做的工作:

numArray = [3.7, 1, 7.2, 5] 
rank = [] 
for i in numArray: 
    rank.append(sorted(numArray)[::-1].index(i)+1) 

print rank # [3, 4, 1, 2] 

更新: 下面是一行代码:

rank = [numArray.index(i)+1 for i in sorted(numArray)[::-1]] 
0

你需要创建数字映射以排列值,这样您可以遍历原始列表并查找每个数字的排名值。

num_list = [3.7, 1, 7.2, 5] 
num_ranks = dict(zip(sorted(num_list, reverse=True), range(1, len(num_list)+1))) 
rank = [num_ranks[v] for v in num_list] 
相关问题