Python

python dict 複数のキーに対する値でソート

例えば、

hoge = [["a"=> 1, "b" => 10], ["a"=> 10, "b"=> 1], ["a"=> 5, "b"=> 5], ["a"=> 3, "b"=> 10], ["a"=> 7, "b"=> 1], ["a"=> 3, "b"=> 3]]

という dict 型のデータを値でソートしたい、ソートの評価優先順位は"a"、"b"の順("a"の値が同じ場合に"b"の値を見てソート)としたい場合、

sorted(hoge, key=lambda k: (k["a"], k["b"]))

とします。結果、

[{'a': 1, 'b': 10}, {'a': 3, 'b': 3}, {'a': 3, 'b': 10}, {'a': 5, 'b': 5}, {'a': 7, 'b': 1}, {'a': 10, 'b': 1}]

となります。"a"、"b"の評価優先順位を逆にしたい場合は、

sorted(hoge, key=lambda k: (k["b"], k["a"]))

とします。結果、

[{'a': 7, 'b': 1}, {'a': 10, 'b': 1}, {'a': 3, 'b': 3}, {'a': 5, 'b': 5}, {'a': 1, 'b': 10}, {'a': 3, 'b': 10}]

となります。また、例えば、"a"は降順したい、ということであれば、

sorted(hoge, key=lambda k: (k["b"], -k["a"]))

とします。結果、

[{'a': 10, 'b': 1}, {'a': 7, 'b': 1}, {'a': 3, 'b': 3}, {'a': 5, 'b': 5}, {'a': 3, 'b': 10}, {'a': 1, 'b': 10}]

-Python
-

© 2021 yshystsj.com Powered by AFFINGER5