您的位置:首页 > 编程语言 > Python开发

python按照二级字典(子字典)值排序

2012-12-21 21:39 363 查看
这是第一篇博客,希望以后有心得多与大家分享!

我们都知道python字典排序非常带感,在如下链接中您将看到python字典的排序方法,/article/4722552.html,同时我想和各位share一下有一个小技巧。比如我们经常只会取排序结果的前10或前二十,因此输出可以用sorted(dic.iteritems(), key
= lambda asd:asd[0] )[0,N]来取前面N个数,在实际中这是种不错的方法。

今天我遇到这样一个问题,我有一个二级字典(子字典)。如下例所示:a = {"阳": {"math": "88", "chinese": "90", "english": "80"},"伟": {"math": "98", "chinese": "80", "english": "77"},"楠": {"math": "85", "chinese": "94", "english": "30"},"泡": {"math": "66", "chinese":
"77", "english": "74"},"骥": {"math": "13", "chinese": "10", "english": "20"}}

a是一个字典,存放5位学生,每个学生自身又是一个字典,分别存放三门课的课程名与成绩。我现在想找出英语最好的三位同学,应该如何解决?

实际上,我们可以利用lambda函数(抱歉我还不是特别弄清lambda,希望以后有机会学习后,和各位解释)。由于例子比较简单,我直接上代码,相信各位可以方便利用此技巧解决各位遇到的问题。

# -*- coding: utf-8 -*-
a = {"阳": {"math": "88", "chinese": "90", "english": "80"},"伟": {"math": "98", "chinese": "80", "english": "77"},\
"楠": {"math": "85", "chinese": "94", "english": "30"},"泡": {"math": "66", "chinese": "77", "english": "74"},\
"骥": {"math": "13", "chinese": "10", "english": "20"}}
EnglishTop3 = sorted(a, key=lambda x:int(a[x]['english']),reverse = True)[0:3]
for student in EnglishTop3:
print student
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: