在python中对数组进行排序

我有一个可变数字数组。我有另一个数组,我想成为数字数组的标签。

myList = [T1_sum, T2_sum, T3_sum, T4_sum, T5_sum, T6_sum, T7_sum, T8_sum, T9_sum, T10_sum]
mylables = ["cats", "dogs", "monkey", "fish", "rabbit", "owl", "pig", "goat", "cow", "bull"]

我想按最高到最低值对数组进行排序。我这样做了:

sortedlist = sorted(myList, reverse=True) 

但是,如何重新排列标签以使它们与值一致?我需要保留它,以便 asortedlabellist是它自己的单个数组(用于将来的事情)。所以我可能必须将值链接到标签,然后sortedlabellist单独拉出一个?

回答

您可以形成一个字典,以便在排序时保持两个列表的顺序:

>>> labelToSum = {key:value for key,value in zip(mylables, myList)}
>>> labelToSum
{'cats': 2,
 'dogs': 4,
 'monkey': 1,
 'fish': 7,
 'rabbit': 3,
 'owl': 8,
 'pig': 4,
 'goat': 5,
 'cow': 9,
 'bull': 4}

然后你可以根据值对这个字典进行排序,如下所示:

>>> {k: v for k, v in reversed(sorted(labelToSum.items(), key=lambda item: item[1]))}
{'cow': 9,
 'owl': 8,
 'fish': 7,
 'goat': 5,
 'bull': 4,
 'pig': 4,
 'dogs': 4,
 'rabbit': 3,
 'cats': 2,
 'monkey': 1}

  • This assumes the keys are unique (probably okay here). Also sorting and putting back into a dict fails prior to python 3.7/3.6 where dicts don't retain insertion order

以上是在python中对数组进行排序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>