我在python
中有一个list
,如下所示
l = [['4K', ['read', '10'], ['rand', '70']],
['64K', ['read', '15'], ['rand', '0']],
['64K', ['read', '0'], ['rand', '0']],
['4K', ['read', '60'], ['rand', '100']],
['4K', ['read', '50'], ['rand', '0']]]
如果temp = ['4K', ['read', '10'], ['rand', '100']
,我首先要基于temp[2][1]
排序,然后我要对列表进行进一步排序,而不修改前一个关于temp[1][1]
的排序。我希望最终结果是这样的
res = [['64K', ['read', '0'], ['rand', '0']],
['64K', ['read', '15'], ['rand', '0']],
['4K', ['read', '50'], ['rand', '0']],
['4K', ['read', '10'], ['rand', '70'],
['4K', ['read', '60'], ['rand', '100']
]
在上面的res
中,优先权首先赋予rand
,然后read
与排序的rand
一起排序。我尝试过像l.sort(key=lambda x: int(x[2][1]))
这样的方法,它首先对rand
进行排序,但是对相同的l
进行进一步排序并不会产生预期的输出,因为前面的排序不会被记住。有什么简单的方法吗?或者,唯一的方法是用相同的rand
进一步拆分列表,然后在最后进行排序和合并
做你想做的事。元组按优先顺序排序
@Oersted的答案是可行的,但是,当按多个条件排序时,一般规则是使用stable sort(which pythons ^{} is )进行排序,并且要向后排序这些条件,此规则可以在任何地方使用,从excel排序到基于web的表排序,在这种情况下,您将使用:
相关问题 更多 >
编程相关推荐