按int(值)排序字典

2024-05-15 02:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

students_grade = [('jon','88'), ('bran', '100'), ('arya','93'), ('dan', '88')]

我们的目标是创建一个新列表,其中包含按年级排序的相同元组:

[('jon','88'), ('dan', '88',' ('arya','93'),('bran','100')]

我试着用字典解决它,但是我注意到'100' < '93'返回True,所以我试着按int(values)对字典排序,但是得到了TypeError。你知道吗

dic = {}
for i in students_grades:
    dic[i[0]] = i[1]
sorted_keys = sorted(dic.keys(), key = int(dic.get), reverse=True)

如果没有int(dic.get),它可以正常工作。为什么会失败?你知道吗


Tags: true列表字典排序keysint元组grade
1条回答
网友
1楼 · 发布于 2024-05-15 02:14:03

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

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')]

相关问题 更多 >

    热门问题