Reputation: 547
I have a list of values that is the sort order:
order = ['foo', 'bar']
data = [{'name': 'bar', 'someData': 'someValue'}, {'name': 'foo', 'someData': 'someValue'}]
I would like to sort data (by 'name') based on order
Upvotes: 0
Views: 57
Reputation: 34312
I would create an order mapping in advance to make the key function faster:
def create_key(order, field='name'):
order_map={v: i for (i, v) in enumerate(order)}
def key(elem):
return order_map[elem[field]]
return key
data.sort(key=create_key(order))
Upvotes: 1
Reputation: 7510
you can go like this:
sorted(data, key = lambda x: order.index(x["name"]))
Upvotes: 2