python里面的lambda和sort的问题

这段代码会出现TypeError: There are no type variables left in dict[{'id': '1001', 'name': '张三', 'english': 100, 'python': 100, 'java': 100}]这个问题,是为什么呢?

```
mode=input('请选择排序方式(1.按英语成绩排序 2.按python成绩排序 3.按java成绩排序 0.按总成绩排序)')
    if mode=='1':
        student_new.sort(key=lambda a:int(a['english']),reverse=asc_or_desc_bool)
    elif mode=='2':
        student_new.sort(key=lambda x:int(x['python']),reverse=asc_or_desc_bool)
    elif mode=='3':
        student_new.sort(key=lambda x:int(x['java']),reverse=asc_or_desc_bool)
    elif mode=='0':
        student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_or_desc_bool)
    else:
```

用pandas中sort_values()函数能解决这个问题,而且数据看起来更直观。

import pandas as pd
student =[{'id': '1001', 'name': '张三', 'english': 100, 'python': 100, 'java': 100}, {'id': '1002', 'name': '赵四', 'english': 90, 'python': 80, 'java': 95}, {'id': '1003', 'name': '王五', 'english': 76, 'python': 60, 'java': 77}, {'id': '1004', 'name': '李六', 'english': 55, 'python': 66, 'java': 56}, {'id': '1005', 'name': '陈七', 'english': 88, 'python': 86, 'java': 71}]
df=pd.DataFrame.from_records(student)
print(df)

mode = input('请选择排序方式(1.按英语成绩排序 2.按python成绩排序 3.按java成绩排序 0.按总成绩排序)')
if mode == '1':
    student_new = df.sort_values(['english'],ascending=False)
    print(student_new)
elif mode == '2':
    # reverse=asc_or_desc_bool
    student_new = df.sort_values(['python'], ascending=False)
    print(student_new)
elif mode == '3':
    student_new = df.sort_values(['java'], ascending=False)
    print(student_new)
elif mode == '0':
    student_new=df.sort_values(['english']+['python']+['java'],axis=0,ascending=False)
    student_new['total'] = df['english']+df['python']+df['java']
    print(student_new)
else:
    pass