特定のキーの順序で辞書のリストをソート

ExplodingGayFish:

私が持っているlistdict。このように:

data = [{"uid": "a1", "name": "b1"}, 
        {"uid": "a3", "name": "b3"}, 
        {"uid": "a4", "name": "b4"},
        {"uid": "a5", "name": "b5"}]

今、私はそれをソートしたいlistのためにuid、このようなフィールド:

uid_order = ['a1', 'a5', 'a3', 'a4']

出力はすべき手段:

[{"uid": "a1", "name": "b1"}, 
 {"uid": "a5", "name": "b5"},
 {"uid": "a3", "name": "b3"},
 {"uid": "a4", "name": "b4"}]

もちろん、私は新しい空を作成することができlist、その後2つの使用forチェックして、すべての要素を追加するループを、これを行うには任意のエレガントな方法(またはそれ以上の複雑さ)がありますか?

ヒープオーバーフロー:

O(N)溶液:

>>> [*map({d['uid']: d for d in data}.get, uid_order)]
[{'uid': 'a1', 'name': 'b1'},
 {'uid': 'a5', 'name': 'b5'},
 {'uid': 'a3', 'name': 'b3'},
 {'uid': 'a4', 'name': 'b4'}]

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=364968&siteId=1