Naive way, sorting a list (key, value):
sorted(a.items(), key=lambda pair: a_list.index(pair[0]))
Fast track by first creating an index map:
index_map = {v: i for i, v in enumerate(a_list)} sorted(a.items(), key=lambda pair: index_map[pair[0]])
Both assume that a_list contains all the keys found in a .
Demo:
>>> a = {'ground': 'obj1', 'floor 1': 'obj2', 'basement': 'obj3'} >>> a_list = ('floor 1', 'ground', 'basement') >>> sorted(a.items(), key=lambda pair: a_list.index(pair[0])) [('floor 1', 'obj2'), ('ground', 'obj1'), ('basement', 'obj3')] >>> index_map = {v: i for i, v in enumerate(a_list)} >>> sorted(a.items(), key=lambda pair: index_map[pair[0]]) [('floor 1', 'obj2'), ('ground', 'obj1'), ('basement', 'obj3')]
Martijn pieters
source share