0

私はリストのリストを持っています -

super_list = [seconds, self.flowdata, key]

ここで、seconds は 10 桁の数字、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 は秒リストの最小の秒数です)、上記のフローデータはフローデータの最初にもなり、上記のキー "1441-4731-1-10 /30/2017」が最初のキーになります。

ヘルプ?

4

2 に答える 2

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 に答える
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 に答える