如何对Python列表进行排序(使用子列表)?例如,我有以下列表:
list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]
排序后我期待:
list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]
另一个例子。我有以下列表:
list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]
排序后我期待:
list2 = [[2, 4, 5], [2, 5, 4], [4, 5, 2]]
首先,我想按长度排序,然后按每个子列表中的逐项排序。 我不想对任何子列表进行排序。
我尝试了以下代码,这有助于我按长度排序:
list1.sort(key=len)
答案 0 :(得分:35)
你需要一把钥匙,如:
<html>
<script>
function brnch()
{
var client_code = document.getElementById("cname").value;
xmlobj=ajaxFunction();
xmlobj.onreadystatechange=function(){
if(xmlobj.readyState == 4)
{
var resp = xmlobj.responseText;
document.getElementById("brch").value=resp;
}
}
var url="getbranch.jsp?c_code="+client_code;
xmlobj.open("POST",url,true);
xmlobj.send();
}
</script>
<input type="hidden" name="brancht" id="brch" value="">
<%
String value=request.getParameter("brch");
System.out.println("hidden field :"+value);
%>
</html>
这使用lambda
创建tuple
,sorted
可以使用{{3}}以所需方式排序。这是有效的,因为元组按元素排序。
lambda l: (len(l), l)
list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]
print(sorted(list1, key=lambda l: (len(l), l)))
list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]
print(sorted(list2, key=lambda l: (len(l), l)))
答案 1 :(得分:1)
Python的list.sort()方法是“稳定的”,i。即比较相等的项目的相对顺序不会改变。因此,您也可以通过调用sort()两次来实现所需的顺序:
>>> list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]
>>> list1.sort() # sort by sublist contents
>>> list1.sort(key=len) # sort by sublist length
>>> list1
[[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]