如何按内部列表的特定索引对列表列表进行排序?

时间:2010-11-13 21:54:42

标签: python sorting

我有一份清单清单。例如,

[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]

如果我想通过内部列表的字符串字段对外部列表进行排序,那么你将如何在python中做到这一点?

11 个答案:

答案 0 :(得分:268)

这是itemgetter

的工作
>>> from operator import itemgetter
>>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> sorted(L, key=itemgetter(2))
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]

这里也可以使用lambda函数,但是在这个简单的情况下lambda函数更慢

答案 1 :(得分:136)

到位

>>> l = [[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> l.sort(key=lambda x: x[2])

使用已排序:

不到位
>>> sorted(l, key=lambda x: x[2])

答案 2 :(得分:62)

Itemgetter允许您按多个条件/列进行排序:

sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1))

答案 3 :(得分:8)

像这样:

import operator
l = [...]
sorted_list = sorted(l, key=operator.itemgetter(desired_item_index))

答案 4 :(得分:8)

array.sort(key = lambda x:x[1])

您可以使用此代码段轻松进行排序,其中1是元素的索引。

答案 5 :(得分:7)

多个标准也可以通过lambda函数实现

sorted_list = sorted(list_to_sort, key=lambda x: (x[1], x[0]))

答案 6 :(得分:6)

我认为lambda函数可以解决你的问题。

  $html = '<!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta http-equiv="Content-Type: application/pdf; charset=utf-8"/>

    <link rel="stylesheet" href="style.css">
    <div style="width:800px; height:970px; padding:20px;  border: 10px      solid #787878">
    <style>
body {
   body {font-family: "simsun"}
}
 </style>
 <div style="width:750px; height:915px; padding:20px;  border: 5px solid  #787878">
  </br>

    <div><img class="imgA1"  src="logo.png" ></div>
    <!--<img class="imgB1" src="logo.png">-->
    </br></br></br></br>
    <h6 style="font-size:16px !important; text-align:center;"> <b>'.$goal.'</b></h6><br/><br/>
    <b>立約人</b></br></br>
    甲方 : <span style="font-size:18px;"><b>'.$user[0]['user_name'].'<b>               </span>
   <br><br>
   乙方 : <span style="font-size:18px;"><b>'.$judge_name.'</b></span><br/><br/>
    <b>四. 本合約壹式貳份,雙方各執壹份為憑。</b><br/><br/>
    裁判簽名___________________<br/><br/>s中華民國 月   日
</div>
</div></html>'; 

$dompdf->loadHtml($html);


$dompdf->setPaper('A4', 'landscape');

/* Render the HTML as PDF */
$dompdf->render();

header('Content-Type: application/pdf; charset=utf-8');
header('Content-disposition: inline; filename="' .  $no . '.pdf"', true);
/* Output the generated PDF to Browser */
$dompdf->stream();

答案 7 :(得分:0)

更容易理解(Lambda实际在做什么):

ls2=[[0,1,'f'],[4,2,'t'],[9,4,'afsd']]
def thirdItem(ls):
    #return the third item of the list
    return ls[2]
#Sort according to what the thirdItem function return 
ls2.sort(key=thirdItem)

答案 8 :(得分:0)

**old_list = [[0,1,'f'], [4,2,'t'],[9,4,'afsd']]
    #let's assume we want to sort lists by last value ( old_list[2] )
    new_list = sorted(old_list, key=lambda x: x[2])**

如果我错了,请纠正我,但不是'x [2]'调用列表中的第三项,而不是嵌套列表中的第三项吗?应该是x [2] [2]吗?

答案 9 :(得分:0)

排序多维数组execute here

arr=[[2,1],[1,2],[3,5],[4,5],[3,1],[5,2],[3,8],[1,9],[1,3]]



arr.sort(key=lambda x:x[0])
la=set([i[0] for i in Points])

for i in la:
    tempres=list()
    for j in arr:
        if j[0]==i:
            tempres.append(j[1])

    for j in sorted(tempres,reverse=True):
        print(i,j)

答案 10 :(得分:0)

确保要排序的列表中没有任何null或NaN值。如果存在NaN值,则排序将关闭,从而影响非空值的排序。

签出Python: sort function breaks in the presence of nan