用簡單的方式,分選的(鍵,值)元組的列表:
sorted(a.items(), key=lambda pair: a_list.index(pair[0]))
比較快的方式,首先創建一個索引圖:
index_map = {v: i for i, v in enumerate(a_list)}
sorted(a.items(), key=lambda pair: index_map[pair[0]])
兩者都假設a_list
包含全部鍵找到a
。
演示:
>>> 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')]
字典*沒有順序*,所以你不能排序的字典。你想要一個排序的值列表嗎?或者是一個鍵值元組的排序列表? –
@MartijnPieters任何事情我會不介意將字典轉換爲元組,然後對它們進行排序... – Wagh