【发布时间】:2016-11-26 04:58:14
【问题描述】:
该列表包含许多元组,元组的第一个元素是名称,第二个元素是评级。
Tuple = [('Bob', 123),('Sky', 234),('Sara', 156)]
for i in range(0, len(Tuple)-1):
smallest = i
for j in range(i+1, len(Tuple)):
if Tuple[j] < Tuple[smallest]:
smallest = j
if smallest !=i:
Tuple[i], Tuple[smallest] = Tuple[smallest] , Tuple[i]
print(Tuple)
这将按字母顺序对列表进行排序,但我希望它按评级从高到低排序。
我试过这个:
for i in range(0, len(Tuple)-1):
smallest = i[1]
for j in range(i+1, len(Tuple)):
if Tuple[j[1]] < Tuple[smallest]:
smallest = j
if smallest !=i:
Tuple[i], Tuple[smallest] = Tuple[smallest] , Tuple[i]
print(Tuple)
但我收到一条错误消息“smallest = i[1] TypeError: 'int' object is not subscriptable”
我不知道该怎么做,也不知道如何更改它以使其正常工作。
注意:我需要自己编写代码,不要使用任何内置函数。
【问题讨论】:
-
你需要自己写一个排序函数,还是仅仅对一个元组进行排序?你可以使用
sorted(Tuple, key=lambda x: x[1], reverse=True) -
我需要自己写
-
@BrendanLevine 我更改了答案以包含一个没有内置插件的解决方案
-
@Signal 非常感谢它的工作,这是我在编程课介绍中的期末考试的一部分。
标签: python list sorting tuples