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

Python在列表中对复杂列表进行排序,python,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'对象没有属性'getite

我的名单:

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'


请帮忙,谢谢

您的问题是您的INT与列表没有关联;目前您有
[list,int,list,int,list,int,…]
而不是
[(list,int),(list,int),(list,int),…])
。如果列表是由代码生成的,请尝试将其重写为输出列表–int对。否则,请尝试通过一次遍历两个列表来重新生成一个新列表

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

你的问题是你的整数与列表没有关联;目前您有
[list,int,list,int,list,int,…]
而不是
[(list,int),(list,int),(list,int),…])
。如果列表是由代码生成的,请尝试将其重写为输出列表–int对。否则,请尝试通过一次遍历两个列表来重新生成一个新列表

iterable = iter(a)
new_list = list(zip(iterable, iterable))
new_list.sort(key=lambda k: k[1])
在您的列表中,数字和内部列表是主列表的独立元素。S、 没有排序的可能-它是“苹果”和“橙子”-现在,如果你想用下面的数字对每个内部列表进行分组,并对它们进行排序,这是另一个历史。分组:

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

b.sort(key x=lambda x[1])
在您的列表中,数字和内部列表是主列表的独立元素。S、 没有排序的可能-它是“苹果”和“橙子”-现在,如果你想用下面的数字对每个内部列表进行分组,并对它们进行排序,这是另一个历史。分组:

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

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

那么,
3
的第一个元素是什么?这是行不通的,因为你的列表和列表中都有整数。好的,我知道了!谢谢那么,
3
的第一个元素是什么?这是行不通的,因为你的列表和列表中都有整数。好的,我知道了!谢谢这是可行的,但我不知道我是否喜欢它-它依赖于“zip”的内部工作,这是一个实现细节。不,这正是
zip
应该如何工作的
zip
循环遍历其每个参数,并从每个参数中获取
next()
,以生成其下一项
list1,list2=zip(*many_pairs)
正是因为如此-
zip
many_pairs
中的每一对中提取第一项,形成
list1
,然后对每一对中的第二项进行相同的操作,形成
list2
。好的-行为实际上在
zip
s规范中-“iterables从左到右的评估顺序是有保证的。“当然是这样,否则,
merged=zip(list1,list2)
将不起作用,它的反面也不会起作用。这是可行的,但我不知道我是否喜欢它-它依赖于“zip”的内部工作“,这是一个实现细节。不,这正是
zip
应该如何工作的
zip
循环遍历其每个参数,并从每个参数中获取
next()
,以生成其下一项
list1,list2=zip(*many_pairs)
正是因为如此-
zip
many_pairs
中的每一对中提取第一项,形成
list1
,然后对每一对中的第二项进行相同的操作,形成
list2
。好的-行为实际上在
zip
s规范中-“iterables从左到右的评估顺序是有保证的。“当然是这样,否则,
merged=zip(list1,list2)
将不起作用,反之亦然。