Python/Tips


Python2.3でディクショナリをソートする

ディクショナリをソートするにはsorted関数を使用すればよいのだが、
python2.4からの実装なのでCentOS4のpython2.3では使用できない。

勢い余ってアナログにやろうとしたが、
このサイトを参考にして解決。


D = {'w1': 100, 'w2': 10, 'w3': 1000} # ディクショナリ作成
L = zip(D.keys(), D.values()) # zipでディクショナリをリスト化
L.sort(lambda x, y: cmp(x[1], y[1])) # sortメソッドでソート
print L

[('w3', 1000), ('w2', 10), ('w1', 100)]
逆順にする場合はcmpを-cmpに、key順でソートする場合は
lambda~とかはいらなくてL.sort()だけで良いが、
cmp(x[0], y[0])でもkey順にソートされますね。
(コード量が増えるから意味は無いが)

もし数値がstr型で保存されてしまっていた場合は
cmp(int(x[1]), int(x[1]))って感じでキャストすれば数値で比較できる。
普通はこんな事態にはならないかも?自分だけですか?

  • 最終更新:2016-01-28 10:18:25

このWIKIを編集するにはパスワード入力が必要です

認証パスワード