0

我有一个列表列表-

super_list = [seconds, self.flowdata, key]

其中 seconds 是一个十位数字,self。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是秒列表中的最小秒数),上面的flowdata也将是flowdata中的第一个,上面的键“1441-4731-1-10 /30/2017" 将是第一个键。

帮助?

4

2 回答 2

0

假设您的列表如下所示[[seconds1, flowdata1, key1], [seconds2, flowdata2, key2], ...]

只需使用super_list.sort().

这将按字典(从左到右)顺序对字段进行排序。由于seconds是最左边的字段,所有条目都将按它排序。

key您还可以使用参数 to按特定字段排序sort,例如:

super_list.sort(key=lambda row: row[0]) #sort by seconds field
于 2012-07-17T16:38:08.357 回答
0

您可以将列表压缩成一个元组,然后对元组列表进行排序,然后使用列表推导解包元组,如下所示:

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 是任意名称,没有超出列表理解范围的名称。

于 2012-07-17T17:29:15.990 回答