python - 如何根据python中的数组值对列表进行排序?

标签 python list vector

假设我有:

list = ['apple','banana','pear','orange']
values = [3,1,2,4]

我需要根据“值”向量中的值对列表字符串进行排序。在 MatLab 中,我会合并两者然后对向量进行排序,但我在这里似乎做不到。有什么想法吗?

谢谢!

最佳答案

这对你有用。使用zip对两个列表进行配对,然后排序,最后得到新的列表。

>>> mylist = ['apple','banana','pear','orange'] 
>>> values = [3,1,2,4]
>>> [i[1] for i in sorted(zip(values, mylist))]
 ['banana', 'pear', 'apple', 'orange']

顺便说一句,不要使用 list 来命名你的列表。

你也可以使用itertools.izip,它类似于zip(),除了它返回一个迭代器而不是一个列表,因此你可以获得更好的性能

>>> from itertools import izip
>>> mylist = ['apple','banana','pear','orange'] 
>>> values = [3,1,2,4]
>>> [i[1] for i in sorted(izip(values, mylist))]
 ['banana', 'pear', 'apple', 'orange']

关于python - 如何根据python中的数组值对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223821/

相关文章:

r - 如何省略 do.call 产生的大量代码?

java - 如何使用 hashmap 或任何列表而不是以下格式的可观​​察列表填充 javafx tableview

java - Android Java : List of items, 单击特定时删除该特定

python - 在 for 循环中在 django admin 中创建另一个模型对象

python - 类似于本地文件的 HTTP Headers 的属性系统

python - Pyspark - 根据其他值的比较删除具有匹配值的行

r - apply() 函数分别按顺序应用于矩阵的列和数值向量的元素

r - 如何从 2 个向量中创建一个对列表

C++ 从指针 vector 中删除元素

python - Pandas:逐个元素合并两个列表列