Python在列表中对复杂列表进行排序

时间:2016-07-05 15:03:52

标签: python

我的清单:

a = [[["a", 0], ["b", 7], ['c', 3]], 9, [['d', 0], ['e', 5], ['f', 7]], 5, [['g', 8], ['h', 3]], 3, [['i', 0], ['j', 1], ['k', 3]], 3]

我想按照"]],"之后的数字对列表进行排序。如上表所示:9,5,3和3。 我试过了:

a.sort(key=lambda x: x[1])

但是我收到了错误:TypeError:' int'对象没有属性' getitem '

请帮助,谢谢!

2 个答案:

答案 0 :(得分:5)

您的问题是您的整数与列表无关;目前您有[list, int, list, int, list, int, ...]而不是[(list, int), (list, int), (list, int), ...]。如果您的列表是由代码生成的,请尝试将其重写为输出list-int对。否则,请尝试一次两个单步执行列表重新生成新列表

iterable = iter(a)
new_list = list(zip(iterable, iterable))
new_list.sort(key=lambda k: k[1])

答案 1 :(得分:0)

a = [[["a", 0], ["b", 7], ['c', 3]], 9, [['d', 0], ['e', 5], ['f', 7]], 5, [['g', 8], ['h', 3]], 3, [['i', 0], ['j', 1], ['k', 3]], 3]

在您的此列表中,数字和内部列表是主列表的独立元素。 S,没有可能的分类 - 它是“苹果”和“橙子” - 现在,如果你想用下面的数字对每个内部列表进行分组,并且它们对它进行排序,那么它就是另一个历史。分组:

b = [a[i: i +2] for i in range(0, len(a), 2)]

现在:

b.sort(key x=lambda x[1])