如何使用预定的字符串列表对字典列表进行排序
字符串的有序列表
["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},
}
答案 0 :(得分:5)
如果您不想依赖字典和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})]
答案 1 :(得分:2)
由于Python3.6
(Python3.7
中的guaranteed),dict
是按插入顺序排序的。
因此,一个简单的理解字典就可以解决问题:
print({key: d.get(key, {"value": 0}) for key in l})
如果您的密钥不存在,我会随意使用默认值。
对于3.6
之前的版本,您可以使用OrderedDict
来源:Python doc
在字典上执行list(d)会以插入顺序返回字典中使用的所有键的列表