我有一份清单清单。例如,
[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]
如果我想通过内部列表的字符串字段对外部列表进行排序,那么你将如何在python中做到这一点?
答案 0 :(得分:268)
>>> 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值,则排序将关闭,从而影响非空值的排序。