Ordenar una lista de diccionario con el fin de clave específica

ExplodingGayFish:

Tengo una listde dictla siguiente manera:

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

Ahora quiero resolver eso listcon el orden del uidcampo de la siguiente manera:

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

Lo que significa que la salida debe ser:

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

Por supuesto, puedo crear un nuevo vacío lista continuación, utilizar 2 forbucles para comprobar y añadir todos los elementos, pero ¿hay alguna manera elegante (o mejor la complejidad) para hacer esto?

Desbordamiento del montón:

O (n) solució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'}]

Supongo que te gusta

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