如何使用预先确定的字符串列表对字典列表进行排序
字符串的有序列表
["Apple", "Watermellon", "Orange", "Grape"]收集的字典数据
{
"Grape": {"value": 3},
"Watermellon": {"value": 5},
"Orange": {"value": 8},
"Apple": {"value": 1}
}所需的dictionary...assuming顺序我必须将其转换为某种类型的列表,以便保持顺序。
{
"Apple": {"value": 1},
"Watermellon": {"value": 5},
"Orange": {"value": 8},
"Grape": {"value": 3},
}发布于 2020-02-29 01:10:44
如果您不想依赖字典和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})]发布于 2020-02-29 01:07:50
由于Python3.6 (Python3.7中的guaranteed),dict是按插入顺序排序的。
因此,一个简单的理解字典就能做到这一点:
print({key: d.get(key, {"value": 0}) for key in l})我采取了默认的值,以防您的密钥不存在。
对于3.6之前的版本,可以使用OrderedDict
来源:Python doc
对字典执行
list(d)将按插入顺序
返回字典中使用的所有键的列表
https://stackoverflow.com/questions/60456212
复制相似问题