如何在python中对列表进行排序,每个索引值有两个数字?

时间:2015-12-06 16:25:38

标签: python-2.7 sorting

我的代码

b=[((1,1)),((1,2)),((2,1)),((2,2)),((1,3))] for i in range(len(b)): print b[i] 获得的输出:
(1,1)
(1,2)
(2,1)
(2,2)
(1,3)

如何按每个索引值中的第一个元素或/和第二个元素对此列表进行排序,以获得输出:
(1,1)
(1,2)
(1,3)
(2,1)
(2,2)

(1,1)
(2,1)
(1,2)
(2,2)
(1,3)

如果两列都按照所需的输出显示进行排序会很好,但如果任何一个输出列都已排序就足够了。

2 个答案:

答案 0 :(得分:1)

试试这个:b = sorted(b, key = lambda i: (i[0], i[1]))

答案 1 :(得分:0)

内置的sorted可以做到这一点。

>>> sorted (b)
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2)]

这只按第一个元素排序,以排序第二个

>>> sorted(b, key=lambda i: i[1])
[(1, 1), (2, 1), (1, 2), (2, 2), (1, 3)]

还要注意Python不允许这个嵌套元组; paren里面的paren减少到只有一个。

>>> b=[((1,1)),((1,2)),((2,1)),((2,2)),((1,3))]
>>> b
[(1, 1), (1, 2), (2, 1), (2, 2), (1, 3)]