Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我试图在元组列表上实现选择排序_Python_List_Sorting_Tuples - Fatal编程技术网

Python I';我试图在元组列表上实现选择排序

Python I';我试图在元组列表上实现选择排序,python,list,sorting,tuples,Python,List,Sorting,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

该列表包含许多元组,元组的第一个元素是名称,第二个元素是评级

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)
Tuple=[('Bob',123),('Sky',234),('Sara',156)]
对于范围(0,len(Tuple)-1)中的i:
最小值=i
对于范围(i+1,len(Tuple))中的j:
如果元组[j]
这将按照字母顺序对列表进行排序,但我希望它按照从高到低的评级进行排序

我试过这个:

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)
范围(0,len(Tuple)-1)中的i的
:
最小值=i[1]
对于范围(i+1,len(Tuple))中的j:
如果元组[j[1]<元组[最小]:
最小=j
如果最小的话=一:
元组[i],元组[最小]=元组[最小],元组[i]
打印(元组)
但是我得到一个错误,说“minimest=I[1]TypeError:'int'对象不可下标”

我不知道该怎么做,也不知道该如何改变它使之工作


注意:我需要自己编写代码,不使用任何内置函数。

使用原始列表

names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)]   
names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)] 
您可以使用python内置的
排序

names_ratings_sorted = sorted(names_ratings, key=lambda tup: tup[1])

print(names_ratings_sorted)
输出:

[("Bob", 123), ("Sara", 156), ("Sky", 234)]   

不带内置设备:

[("Bob", 123), ("Sara", 156), ("Sky", 234)]   
使用相同的原始列表

names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)]   
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)

用你原来的名单

names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)]   
names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)] 
您可以使用python内置的
排序

names_ratings_sorted = sorted(names_ratings, key=lambda tup: tup[1])

print(names_ratings_sorted)
输出:

[("Bob", 123), ("Sara", 156), ("Sky", 234)]   

不带内置设备:

[("Bob", 123), ("Sara", 156), ("Sky", 234)]   
使用相同的原始列表

names_ratings = [("Bob", 123), ("Sky", 234), ("Sara", 156)]   
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)

您需要自己编写排序函数,还是只需要对元组进行排序?您可以使用
sorted(tuple,key=lambda x:x[1],reverse=True)
我需要写它myself@BrendanLevine我改变了答案,加入了一个没有构建的解决方案-ins@Signal非常感谢它的有效性,这是我在编程课程介绍中的最后一部分。你需要自己编写排序函数,还是只需要对元组排序?你可以使用
sorted(tuple,key=lambda x:x[1],reverse=True)
我需要写它myself@BrendanLevine我改变了答案,加入了一个没有构建的解决方案-ins@Signal非常感谢它的效果,这是我在编程入门课程中期末考试的一部分。