如何连续对具有两个属性的字典进行排序?

时间:2018-04-10 01:07:13

标签: python lambda

import operator

class Student:
        def __init__(self, name, grade, age):
                self.name = name
                self.grade = grade
                self.age = age


studi1=Student('john', 'A', 15)
studi2=Student('dave', 'B', 10)
studi3=Student('jane', 'B', 12)

student_Dict = {}
student_Dict[studi1.name]=studi1
student_Dict[studi2.name]=studi2
student_Dict[studi3.name]=studi3

for key in (sorted(student_Dict.values(), key=operator.attrgetter('age'))):
    print(key)

我想先按年级排序,然后按年龄排序。我想要有关lambda表示法的帮助。

1 个答案:

答案 0 :(得分:1)

你想创建一个匿名函数,它可以获得学生的成绩,然后是元组中的年龄,这样你就可以使用该元组作为键来对你的词典进行排序:

for key in (sorted(student_Dict, key=lambda x: (student_Dict[x].grade, student_Dict[x].age))):
    print(key)