如何根据python中的数组值排序列表?

mar*_*arc 1 python list vector

让我们说:

list = ['apple','banana','pear','orange']
values = [3,1,2,4]
Run Code Online (Sandbox Code Playgroud)

我需要根据"values"向量中的值来排序列表字符串.在MatLab中我会合并两个然后对矢量进行排序,但似乎我不能在这里做到这一点.有任何想法吗?

谢谢!

jab*_*edo 9

这可能对你有用.使用zip配对两份名单,然后进行排序,最终得到了新的列表.

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

顺便说一下,不要list用于命名列表.

除了它返回迭代器而不是列表之外,您还可以使用itertools.izipzip(),因此您可以获得更好的性能

>>> 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']
Run Code Online (Sandbox Code Playgroud)