【发布时间】:2017-12-17 05:37:03
【问题描述】:
以下是我拥有的示例字典。
my_dict = {
'003':{
'class':'13',
'marks':'90',
'name':'CCC',
'date_accessed':'2017-07-12 17:43:24'
},
'002':{
'marks':'90',
'class':'10',
'name':'BBB',
'date_accessed':'2017-07-12 17:43:24'
},
'001':{
'marks':'80',
'class':'9',
'name':'AAA',
'date_accessed':'2017-07-12 17:43:24'
},
'005':{
'date_accessed':'2017-07-12 17:43:42',
'marks':'999',
'name':'EEE',
'class':'99'
},
'004':{
'class':'50',
'marks':'100',
'name':'DDD',
'date_accessed':'2017-07-12 17:43:24'
}
}
现在我想按marks排序,所以结果字典会是这样的
my_dict = {
'005':{
'date_accessed':'2017-07-12 17:43:42',
'marks':'999',
'name':'EEE',
'class':'99'
},
'004':{
'class':'50',
'marks':'100',
'name':'DDD',
'date_accessed':'2017-07-12 17:43:24'
}
'003':{
'class':'13',
'marks':'90',
'name':'CCC',
'date_accessed':'2017-07-12 17:43:24'
},
'002':{
'marks':'90',
'class':'10',
'name':'BBB',
'date_accessed':'2017-07-12 17:43:24'
},
'001':{
'marks':'80',
'class':'9',
'name':'AAA',
'date_accessed':'2017-07-12 17:43:24'
},
}
现在,不知何故,我已经实现了使用这个等式按marks 对其进行排序
dict_sorted = sorted(my_dict, key=lambda x: int(my_dict[x]['marks']), reverse=True)
但这仅以排序方式给我keys,但我无法像上面那样生成新排序的字典。请在这里帮我按marks 对字典进行排序,并提供新的排序字典。谢谢。
编辑:我已经在 stackoverflow 中看到了很多类似 Sort a Python dictionary by value 和 Issue sorting a multi-dimensional dictionary that has non-numeric indices in Python 的帖子,但这些帖子无法提供我需要的结果。
【问题讨论】:
-
您的目标字典与输入字典相同(除了您的错字)。
-
字典是无序的。说“排序字典”是没有意义的。您最好的选择是使用有序映射,例如
collections.OrderedDict。为什么你需要它“排序”呢?
标签: python python-2.7 sorting dictionary