我的清单:
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 '
请帮助,谢谢!
答案 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])