如何用冒泡排序对嵌套列表按降序排列?
目前我正在处理一个嵌套列表,这个列表打印出地区名称和每个组里的人数。我已经找到了把嵌套列表中的数字转换成整数的方法,同时保持名称为字符串:
def Top5_bottom5():
with open("APExam.txt", "r") as in_file:
nested = [line.strip().split(',') for line in in_file][1:]
nested = [line[0:1] + [int(x) for x in line[1:]] for line in nested]
print nested
这段代码会打印出以下的州和统计数据:
[['Alabama', 126, 79, 17], ['Alaska', 21, 100, 10], ['Arizona', 190, 59, 16], ['Arkansas', 172, 49, 28], ['California', 4964, 76, 22] ...]
我想使用一个类似于气泡排序的函数,代码大概是这样的:
def bubble(badList):
length = len(badList) - 1
unsorted = True
while unsorted:
for element in range(0,length):
unsorted = False
if badList[element] > badList[element + 1]:
hold = badList[element + 1]
badList[element + 1] = badList[element]
badList[element] = hold
print badList
else:
unsorted = True
但是从这段代码中,我还不太明白如何指定每个子列表中的第[1]个元素,以便按降序进行排序。所以我想让它看起来更像这样:
[['California', 4964, 76, 22], ['Arizona', 190, 59, 16], ['Arkansas', 172, 49, 28], ['Alabama', 126, 79, 17],['Alaska', 21, 100, 10]... ]
总的来说,我想知道如何使用气泡排序对嵌套列表中特定子列表的元素进行排序?
1 个回答
1
与其写 if badList[element] > badList[element + 1]
,不如试试 if badList[element][1] > badList[element + 1][1]
。你可以继续使用 []
这种方式来查看更深层次的内容。