This post is also available in: 日本語 (Japanese)
pythonを使っていて、配列の要素(配列中の配列の要素)になんらかの処理を行なった上、sorted関数にて並べ替えを行いたい...という場合のコードをメモとして書きとめています。
以下の例ではそれぞれ、こんな感じです。
print output00:3番目(data[i][3])のリスト中の平均を計算してソートする
print output01:2番目(data[i][2])のリスト中の数値によってソートする
print output02:1番目(data[i][1])の文字列の値によってソートする
#!/usr/bin/env python # -*- coding: utf-8 -*- def str_element(x): return x[0] def num_element(x): return x[1] def average(x): return sum(x[2])/len(x[2]) data = [ [["dataA"],[999],[1.0, 5.0, 10.0]], [["dataB"],[888],[2.0, 4.0, 200.0]], [["dataC"],[777],[3.0, 3.0, 300.0]] ] output00 = sorted(data, key=lambda x: average(x)) output01 = sorted(data, key=lambda x: num_element(x)) output02 = sorted(data, key=lambda x: average(x)) print output00 # [[['dataA'], [999], [1.0, 5.0, 10.0]], [['dataB'], [888], [2.0, 4.0, 200.0]], [['dataC'], [777], [3.0, 3.0, 300.0]]] print output01 # [[['dataC'], [777], [3.0, 3.0, 300.0]], [['dataB'], [888], [2.0, 4.0, 200.0]], [['dataA'], [999], [1.0, 5.0, 10.0]]] print output02 # [[['dataA'], [999], [1.0, 5.0, 10.0]], [['dataB'], [888], [2.0, 4.0, 200.0]], [['dataC'], [777], [3.0, 3.0, 300.0]]]