python按某一内部列表排序

我有一个list他的形式是这样的list0=[list1,list2,list3]三个list1、2、3长度一样且一一对应(list1[0]、list2[0]、list3... 我有一个list他的形式是这样的list0 = [list1,list2,list3]
三个list1、2、3长度一样且一一对应(list1[0]、list2[0]、list3[0]为一组对应关系),每个list中元素类型一样,list2是float数,我现在想让整个list0依据list2中的数值大小顺序排列,希望排序后list1、2、3之间的对应关系不变。万能网友,有什么好的函数或者方法建议么?在线等啊。。。。。。。。。
展开
 我来答
sylecn
推荐于2016-09-17 · TA获得超过2991个赞
知道大有可为答主
回答量:1169
采纳率:57%
帮助的人:707万
展开全部
#!/usr/bin/env python2
# coding=utf-8

import itertools


def sort_by_2nd_list(list0):
    list_of_tuple = itertools.izip(*list0)
    sorted_list = sorted(list_of_tuple, key=lambda x: x[1])
    return [[x[i] for x in sorted_list] for i in range(len(list0))]


def test_sort_by_2nd_list():
    list1 = ['A', 'B', 'C']
    list2 = [1.5, 1.2, 1.3]
    list3 = [1, 2, 3]
    list0 = [list1, list2, list3]
    assert sort_by_2nd_list(list0) == [['B', 'C', 'A'],
                                       [1.2, 1.3, 1.5],
                                       [2, 3, 1]]
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式