所以,我想要做的是,用包含(num, tuple)
的列表对列表进行排序我想先用元组的第二个值对它进行排序,如果2是相等的,我想按它排序num(of the first tuple)
。
所以我想说:
l = [(1,(2,3)),(3,(2,1)),(2,(2,1))]
print(l.sort(key=something))
[(2,(2,1)), (3,(2,1)), (1,(2,3))]
我试过了:
l.sort(key=itemgetter(1,0)
当然没用。有什么想法吗?
谢谢。
答案 0 :(得分:3)
operator.itemgetter
效果很好:
>>> from operator import itemgetter
>>> l = [(1,(2,3)),(3,(2,1)),(2,(2,1))]
>>> l.sort(key=itemgetter(1,0))
>>> print(l)
[(2, (2, 1)), (3, (2, 1)), (1, (2, 3))]
>>>
我认为问题是你试图打印list.sort
的结果。你不能这样做,因为它是一个就地方法(它总是返回None
)。
答案 1 :(得分:0)
>>> l = [(1,(2,3)),(3,(2,1)),(2,(2,1))]
>>> sorted(l, key=lambda t: (t[1][1],t[0]))
[(2, (2, 1)), (3, (2, 1)), (1, (2, 3))]
或者:
>>> from operator import itemgetter
>>> sorted(l, key=itemgetter(1,0))
[(2, (2, 1)), (3, (2, 1)), (1, (2, 3))]
答案 2 :(得分:0)
这也有效:
l.sort(key=lambda x: x[::-1])
请注意,list.sort会对列表进行排序,因此print(l.sort(key = something))将打印无。