我在python中有一个列表列表。我需要根据最低级别中的一个值对最高级别的列表进行排序。
对于玩具模型,我的列表首先使用列表small
创建,列表包含列表,每个列表包含三个项目:
small = [["dog", 5, 6], ["cat", 391, 130], ["pig", 45, 2]...]`
然后有一个更大的列表large
,它是通过将小列表和另一个项目附加在一起而创建的:
large.append([["category 1"], small])`
这是在一个循环中完成的,所以如果循环的计数器为5,它将继续通过一个函数创建一个列表small
5次,每次都将它附加到列表large
。
我的目标是根据最小列表中的元素(包含small
列表的列表)对最终列表进行排序。我目前正在逐行打印large
列表,其中small
列表按其中列表的index 1
排序(请参阅:5,10,15顺序,1, 3,6按顺序等),所以我的输出是这样的:
>category 1:
>['Dog', 5, 6]
>['Pig', 10, 2]
>['Cat', 15, 130]
>['Buffalo', 20, 1]
>['Newt', 25, 45]
>category 2:
>['Newt', 1, 1092]
>['Cat', 3, 352]
>['Pig', 6, 34]
>['Buffalo', 9, 12]
>['Dog', 12, 5]
>category 3:
>['Buffalo', 2, 12]
>['Pig', 4, 37]
>['Cat', 6, 34]
>['Newt', 8, 150]
>['Dog', 10, 52]
但是,我想在查看构成最小数组的列表中large
中的元素时,按照从最小到最大的顺序打印index 1
列表。所以我的理想输出是:
>category 2:
>['Newt', 1, 1092]
>['Cat', 3, 352]
>['Pig', 6, 34]
>['Buffalo', 9, 12]
>['Dog', 12, 5]
>category 3:
>['Buffalo', 2, 12]
>['Pig', 4, 37]
>['Cat', 6, 34]
>['Newt', 8, 150]
>['Dog', 10, 52]
>category 1:
>['Dog', 5, 6]
>['Pig', 10, 2]
>['Cat', 15, 130]
>['Buffalo', 20, 1]
>['Newt', 25, 45]
我尝试使用itemgetter()
进行排序,但是,在使用large
对itemgetter()
进行排序时,我只能对列表large
中的项目进行排序,这些项目为[category x]
}和[[a,b,c], [a,b,c]]
。有没有办法访问itemgetter的最低级元素?或者另外一种方法来排序这个清单?
感谢。