ExplodingGayFish:
私が持っているlist
のdict
。このように:
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'}]