根据列表中值的顺序对dict的键进行排序



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

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

因此,在这种情况下,我希望dict被排序,这样键"Beta"首先出现,然后是"Gamma",然后才是"Alpha"。

有什么好主意吗?

使用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')])

试试这个(使用带键函数的sorted(((:sorted(value_dict.items(), key=lambda pair: key_order.index(pair[0]))

最新更新