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中,字典插入顺序是有保证的(我个人认为这是不可靠的).没有出现在您列表中的键怎么办?到底是什么问题?你试过什么,做过什么研究吗?