根据第二个整数对列表进行排序

时间:2021-01-18 22:17:13

标签: python list sorting

我正在尝试根据第二项对列表进行排序。我已经写出了这段代码,但它没有正确地对它们进行排序。

import random

d2 = []
for i in range (12):
    x = random.randint(1,100)
    y = x
    x = random.randint(1,100)
    d2.append([x,y])

我在处理这部分时遇到问题,需要将其整理好。它对前两个列表进行排序,但随后停止工作。我的代码有什么问题?

def sortlist(A):
    l = len(A)
    for i in range(0, l):
        for j in range(0, l-i-1):
            if (A[j][1] > A[j + 1][1]):
                tempo = A[j]
                A[j]= A[j + 1]
                A[j + 1]= tempo
                return A

A = d2
print(sortlist(A))

3 个答案:

答案 0 :(得分:2)

您可以使用 Python 的 sorted,并设置您的自定义 key 函数以根据列表元素的排序方式进行指定。

# sort the list based on each element's second integer (elem[1])
sorted(d2, key=lambda elem: elem[1])

答案 1 :(得分:1)

您可以使用 keysortsorted 参数来按该键排序。在这种情况下,您需要的密钥是 itemgetter(1),例如:

import operator

data = [('a', 5), ('b', 4), ('c', 7), ('d', 6)]
data.sort(key=operator.itemgetter(1))

# data is now [('b', 4), ('a', 5), ('d', 6), ('c', 7)]

顺便说一句,operator.itemgetter(1)lambda x: x[1] 的作用相同。

答案 2 :(得分:0)

你追求的是这样的东西吗?

list1 = [10, 5, 2, 3]
list2 = list(list1)
del list2[0]
list2.sort()

for i in range(0, len(list2)):
    list1[i+1] = list2[i]

print(list1)

输出:[10, 2, 3, 5]