Python 按字符串列表对词典列表进行排序

Python 按字符串列表对词典列表进行排序,python,Python,如何使用预先确定的字符串列表对词典列表进行排序 有序字符串列表 ["Apple", "Watermellon", "Orange", "Grape"] 收集的词典数据 { "Grape": {"value": 3}, "Watermellon": {"value": 5}, "Orange": {"value": 8}, "Apple": {"value": 1} } 所需的字典顺序…假设我必须将其转换为某种类型的列表以保持顺序 { "Apple":

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

有序字符串列表

["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},
}

由于
Python3.6
(在
Python3.7
)中,
dict
按插入顺序排序

因此,一个简单的理解口述就可以做到:

print({key: d.get(key, {"value": 0}) for key in l})
如果您的密钥不存在,我可以随意使用默认值

对于
3.6
之前的版本,您可以使用

资料来源:

在字典上执行list(d)将按插入顺序返回字典中使用的所有键的列表


如果不想依赖字典和python版本的插入顺序,可以将其转换为排序列表,例如:

order=[“苹果”、“沃特梅隆”、“橙子”、“葡萄”]
数据={
“葡萄”:{“价值”:3},
“Watermellon”:{“value”:5},
“橙色”:{“值”:8},
“苹果”:{“价值”:1}
}
ordered_data=sorted(data.items(),key=lambda item:order.index(item[0]))
打印(有序的数据)
>>>[('Apple',{'value':1}),('Watermellon',{'value':5}),('Orange',{'value':8}),('Grape',{'value':3})]

你能分享没有产生所需输出的代码吗?字典没有顺序,你要么使用
OrderedDict
,要么改变数据结构,要么依赖于这样一个事实,即在Python>=3.7中,字典插入顺序是有保证的(我个人认为这是不可靠的).没有出现在您列表中的键怎么办?到底是什么问题?你试过什么,做过什么研究吗?