首页 > 解决方案 > 按字符串列表对字典列表进行排序

问题描述

如何使用预定的字符串列表对字典列表进行排序

有序的字符串列表

["Apple", "Watermellon", "Orange", "Grape"]

收集的字典数据

{
    "Grape": {"value": 3},
    "Watermellon": {"value": 5},
    "Orange": {"value": 8},
    "Apple": {"value": 1}
}

所需的字典顺序...假设我必须将其转换为某种列表以保持顺序。

{
    "Apple": {"value": 1},
    "Watermellon": {"value": 5},
    "Orange": {"value": 8},
    "Grape": {"value": 3},
}

标签: python

解决方案


如果不想依赖字典和python版本的插入顺序,可以把它变成排序列表,例如:

order = ["Apple", "Watermellon", "Orange", "Grape"]

data = {
    "Grape": {"value": 3},
    "Watermellon": {"value": 5},
    "Orange": {"value": 8},
    "Apple": {"value": 1}
}

ordered_data = sorted(data.items(), key=lambda item: order.index(item[0]))
print(ordered_data)

>>> [('Apple', {'value': 1}), ('Watermellon', {'value': 5}), ('Orange', {'value': 8}), ('Grape', {'value': 3})]

推荐阅读