我想对包含数字的python列表进行排序(例如l1),并使用该列表的索引(排序顺序)重新排列两个不同列表(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']
在这里,我想按降序对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']
目前,我正在使用Python(l1_sorted = sorted(l1, reverse=True)
)的排序函数。但这只给了我l1_sorted。
如何实现所需的全部功能(即l2_sorted和l3_sorted)?
答案 0 :(得分:5)
将它们压缩在一起,分类,然后解压:
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']