簡體   English   中英

在Python中對列表列表進行唯一排序

[英]Uniquely sorting a list of lists in Python

我有一個清單清單-

super_list = [seconds, self.flowdata, key]

其中,秒是十位數字,自我。 flowdata是一個由160個整數組成的列表,而key是一個標識字符串。 打印super_list將產生以下結構的許多迭代,所有迭代都具有不同的值,

例:

"[[1509321600], 
  ['1', '-1', '4', '7', '7', '1', '-8', '-14', '-24', '-29', '-25', '-24', '-9', '-4', '0', '0', '-5', '-10', '-6', '-5', '7', '-4', '-4', '-11', '5', '3', '9', '5', '3', '3', '6', '-6', '-8', '-6', '-6', '25', '23', '30', '22', '13', '-7', '0', '-1', '-18', '-24', '-28', '-24', '-24', '-18', '-14', '-14', '-12', '-13', '-11', '-15', '-16', '-8', '-3', '-4', '-2', '11', '29', '38', '40', '41', '29', '34', '25', '20', '15', '31', '22', '16', '2', '8', '21', '39', '43', '45', '38', '39', '37', '38', '41', '43', '42', '38', '34', '34', '25', '25', '29', '18', '23', '27', '26', '18', '15', '15', '11', '17', '10', '11', '4', '-3', '-12', '-17', '-14', '6', '5', '13', '4', '-21', '-22', '-16', '-12', '-6', '4', '16', '9', '17', '16', '16', '16', '15', '12', '12', '7', '-2', '-12', '-13', '-5', '-7', '-8', '-12', '-15', '-14', '-11', '-8', '-1', '-1', '-3', '-12', '-7', '-6', '-7', '5', '4', '2', '3', '1', '0', '-12', '-12', '-13', '-17', '-18', '-18', '-15', '-13', '-13', '-16', '-17', '-18', '-18', '-19', '-16', '-13'], 
  '1441-4731-1-10/30/2017']

秒,流數據和鍵的每組(如果需要,也可以如上所述,行)都相關。

我想對super_list進行排序,以使秒按從最小到最大的順序排序,而且還要將其相關的流數據和鍵鍵入super_list中的同一數字“行”中。

即說上面的例子是排序列表中的第一個(1509321600是秒列表中最小的秒數),上面的流數據也將是流數據中的第一個,並且上面的鍵“ 1441-4731-1-10 / 30/2017”將是第一把鑰匙。

救命?

假設您的列表看起來像: [[seconds1, flowdata1, key1], [seconds2, flowdata2, key2], ...]

只需使用super_list.sort()

這將按字典順序(從左到右)按字段排序。 由於seconds是最左邊的字段,因此所有條目都將按該字段排序。

您也可以使用key參數對特定字段進行sort ,例如:

super_list.sort(key=lambda row: row[0]) #sort by seconds field

您可以將列表壓縮到一個元組中,然后對元組列表進行排序,然后使用列表理解解壓縮元組,如下所示:

super_list = [seconds, flowdata, key for zipped_tuple in sorted(zip(super_list[0], super_list[1], super_list[2]))]

其中seconds,flowdata,key和zipped_tuple是任意名稱,沒有范圍超出列表理解范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM