Ji *_*ong 1 python list python-2.7
我想对包含数字(比如l1)的python列表进行排序,并使用此列表的索引(排序顺序)重新排列两个不同列表(l2和l3)的元素.我想用标准的python库(不是pandas)实现这一点.我正在使用python 2.7.
例如,让我们说:
l1 = [2,4,5,1]
l2 = ['aa', 'bb', 'cc', 'dd']
l3= ['a_a', 'b_b', 'c_c', 'd_d']
Run Code Online (Sandbox Code Playgroud)
在这里,我想按降序对l1进行排序l1_sorted = [5,4,2,1].
其他列表(l2和l3)将按照l1(l1_sorted)中的排序索引重新排列.在上面的例子中,我们应该:
l2_sorted = ['cc', 'bb', 'aa', 'dd']
l3_sorted = ['c_c', 'b_b', 'a_a', 'd_d']
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用Python(l1_sorted = sorted(l1, reverse=True))的排序函数.但那只能给我l1_sorted.
如何实现我想要的全部功能(即l2_sorted和l3_sorted)?
将它们拼接在一起,排序,然后解压缩:
zipd = sorted(zip(l1,l2,l3), key=lambda t:-t[0])
l2_sorted = [t[1] for t in zipd] #['cc', 'bb', 'aa', 'dd']
l3_sorted = [t[2] for t in zipd] #['c_c', 'b_b', 'a_a', 'd_d']
Run Code Online (Sandbox Code Playgroud)