内の辞書のリストのリストを並べ替え:私は辞書のリストのリストであるオブジェクト持っているのpython
myObject =[[{ "play": 5.00, "id": 1, "uid": "abc" }, \
{ "play": 1.00, "id": 2, "uid": "def" }], \
[{ "play": 6.00, "id": 3, "uid": "ghi" }, \
{ "play": 7.00, "id": 4, "uid": "jkl" }], \
[{ "play": 3.00, "id": 5, "uid": "mno" }, \
{ "play": 1.00, "id": 6, "uid": "pqr" }]]
を、私は、各ネストされたの辞書でplay
値の合計でリストをソートしたいですリスト。
sorted(myObject, key=sum(map(itemgetter(play))), reverse=True)
が働くだろう:それは、その後dictsのリストだけだったら
myObject =[[{ "play": 6.00, "id": 3, "uid": "ghi" }, \
{ "play": 7.00, "id": 4, "uid": "jkl" }], \
[{ "play": 5.00, "id": 1, "uid": "abc" }, \
{ "play": 1.00, "id": 2, "uid": "def" }], \
[{ "play": 3.00, "id": 5, "uid": "mno" }, \
{ "play": 1.00, "id": 6, "uid": "pqr" }]]
:オブジェクトは次のようにソートされます。私はリストをループせずに和を計算し、ソートすることなくこれを行う方法を理解できません。これは私が今やっていることですが、私のリストには数百万ものリストが含まれているので、ループを削除してこのコードの効率を上げようとしています。あなたはそこにかかわらず、問題を持っています
key=sum(map(itemgetter(play)))
:ソートとsum
、map
とplay
キーにitemgetter
を使用した場合
メモ:この場合、末尾の '' \ ''行継続は必要ありません。行はカンマで終わり、リストリテラルはまだ "開いています"ので、Pythonは自動的に次の行がそこに続くことを期待します。 – poke