我有一个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'}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句