Python 按int(值)对字典排序

Python 按int(值)对字典排序,python,dictionary,Python,Dictionary,students_grade是一个包含元组的列表,每个元组都有一个学生姓名和一个年级,都是字符串。 例如: students_grade = [('jon','88'), ('bran', '100'), ('arya','93'), ('dan', '88')] 目标是创建一个新列表,该列表具有按等级排序的相同元组: [('jon','88'), ('dan', '88',' ('arya','93'),('bran','100')] 尝试使用字典解决它,但是我注意到'100'

students_grade是一个包含元组的列表,每个元组都有一个学生姓名和一个年级,都是字符串。 例如:

students_grade = [('jon','88'), ('bran', '100'), ('arya','93'), ('dan', '88')]
目标是创建一个新列表,该列表具有按等级排序的相同元组:

[('jon','88'), ('dan', '88',' ('arya','93'),('bran','100')]
尝试使用字典解决它,但是我注意到'100'<'93'返回True,所以我尝试按intvalues对字典进行排序,但是得到了TypeError


没有intdic,它工作正常。为什么它会失败?

对于一个普通的字典来说,没有顺序的概念,而且你也不需要它来排序列表。试试这个:

x = [('jon', '88'), ('bran', '100'), ('arya', '93'), ('dan', '88')]
sorted(x, key=lambda pair: int(pair[1]))
=>  [('jon', '88'), ('dan', '88'), ('arya', '93'), ('bran', '100')]

因为您正在尝试将字典实例方法转换为整数。大概你的意思是key=lambda k:intdic.getk。键参数必须是接受单个参数的可调用参数。
x = [('jon', '88'), ('bran', '100'), ('arya', '93'), ('dan', '88')]
sorted(x, key=lambda pair: int(pair[1]))
=>  [('jon', '88'), ('dan', '88'), ('arya', '93'), ('bran', '100')]