我正在尝试根据第二项对列表进行排序。我已经写出了这段代码,但它没有正确地对它们进行排序。
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))
答案 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)
您可以使用 key
或 sort
的 sorted
参数来按该键排序。在这种情况下,您需要的密钥是 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]