首页 > 解决方案 > 根据列表中值的顺序对键进行排序

问题描述

在 Python 中,我有一个字典,并希望它根据与字典中存储在列表中的键匹配的值的顺序进行排序。假设如下:

value_dict = {"Alpha": "The Alpha", "Beta": "The Beta", "Gamma": "The Gamma"}
key_order = ["Beta", "Gamma", "Alpha"]

所以在这种情况下,我希望对字典进行排序,以便键“Beta”首先出现,然后是“Gamma”,然后是“Alpha”。

有什么好主意我会怎么做?

标签: pythonsortingdictionary

解决方案


使用OrderedDict

value_dict = {"Alpha": "The Alpha", "Beta": "The Beta", "Gamma": "The Gamma"}
key_order = ["Beta", "Gamma", "Alpha"]

# OrderedDict will keep the sequence intact
from collections import OrderedDict
OrderedDict(zip(key_order, [value_dict[i] for i in key_order]))

# OrderedDict([('Beta', 'The Beta'),
#              ('Gamma', 'The Gamma'),
#              ('Alpha', 'The Alpha')])

推荐阅读