gpt4 book ai didi

python - + : 'int' and 'tuple' 不受支持的操作数类型

转载 作者:行者123 更新时间:2023-11-30 23:17:59 24 4
gpt4 key购买 nike

我需要完成一项任务,其中向我提供了每个名称的姓名和成绩列表,并且我需要按从高到低的成绩对这些进行排序。但是,如果两个名字具有相同的等级,则按字母顺序对这些名字进行排序。这就是我遇到的问题。我需要将排序功能保留在一行上。

a = [('Tim Jones', 54), ('Anna Smith', 56), ('Barry Thomas', 88)]
sum(sorted(a,key=lambda x: x[1]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

知道如何解决这个问题吗?我已经尝试了很多天了。

已更新

好的,感谢您帮助我解决这个问题,但是我还需要解决另一种情况。

a = [('Tim Jones', 'C'), ('Anna Smith', 'B'), ('Barry Thomas', 'A')]
sorted(a,key=lambda x: -x[1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: bad operand type for unary -: 'str'

所以这就是目前的情况,基本上我现在需要做的就是整理列表,然后从最高等级到最低等级。

最佳答案

sorted() 函数返回一个元组列表。所以你不能对它们求和,因为 sum() 假设接收一个数字序列。

第二个是因为 x[1] 之前有一个减号 (-),而 x[1] 是一个字符串。不能有负字符串。

>>> a = [('Tim Jones', 'C'), ('Anna Smith', 'B'), ('Barry Thomas', 'A')]
>>> sorted(a,key=lambda x: x[1])

如果您想在成绩相同时按字母顺序对这些名字进行排序,请使用元组 (x[1],x[0]) 作为排序键。

>>> a = [('Tim Jones', 54), ('Anna Smith', 56), ('Barry Thomas', 88),('Array Thomas', 88)]
>>> sorted(a,key=lambda x: (x[1],x[0]))
[('Tim Jones', 54), ('Anna Smith', 56), ('Array Thomas', 88), ('Barry Thomas', 88)]

关于python - + : 'int' and 'tuple' 不受支持的操作数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27028833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com