排序与特定键的顺序字典的名单

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'}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章