[英]I'm trying to implement a selection sort on a list of tuples
该列表包含许多元组,其中元组的第一个元素是名称,第二个元素是等级。
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)
但是我收到一条错误消息,指出“最小= i [1] TypeError:'int'对象不可下标'
我不知道该怎么做,或者如何更改它才能使其正常工作。
注意:我需要自己编写代码,而不要使用任何内置函数。
用您的原始清单,
names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)]
您可以使用sorted
内置的python。
names_ratings_sorted = sorted(names_ratings, key=lambda tup: tup[1])
print(names_ratings_sorted)
输出:
[("Bob", 123), ("Sara", 156), ("Sky", 234)]
没有内置函数:
使用相同的原始列表,
names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)]
无需使用任何内置程序即可工作。
names_ratings_sorted = []
while names_ratings:
maximum = names_ratings[0]
for name, rating in names_ratings:
if rating > maximum[1]:
maximum = (name, rating)
name_ratings_sorted.append(maximum)
names_ratings.remove(maximum)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.