如何使用冒泡排序按降序组织嵌套列表?

时间:2014-07-21 02:40:16

标签: python python-2.7 nested-lists bubble-sort

目前,我正在使用嵌套列表打印出区域名称以及组中相关的人数。我已经找到了如何将嵌套列表中的数字转换成整数并将名称保存为字符串:

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 个答案:

答案 0 :(得分:1)

而不是if badList[element] > badList[element + 1],请尝试if badList[element][1] > badList[element + 1][1]。您可以继续使用[]表示法来查看任意嵌套深度。