Classificar uma lista de dicionário com ordem de chave específica

ExplodingGayFish:

Eu tenho um listde dictcomo isto:

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

Agora eu quero resolver isso listcom a ordem do uidcampo assim:

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

Que significa que a saída deve ser:

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

Claro, eu posso criar um novo vazio list, em seguida, usar 2 forloops para verificar e adicionar cada elemento, mas existe alguma maneira elegante (ou melhor a complexidade) para fazer isso?

Heap Overflow:

O (n) solução:

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

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=364967&siteId=1
Recomendado
Clasificación