0
对(x, y)
的元组列表进行排序的最佳方法是什么?我想按照x
的顺序排序,但是当有x
的值相同时,我想按照y
来分类和排序。排序元组列表(Python 3.5)
对(x, y)
的元组列表进行排序的最佳方法是什么?我想按照x
的顺序排序,但是当有x
的值相同时,我想按照y
来分类和排序。排序元组列表(Python 3.5)
两年元素的元组共享第一x
价值和不同的y
值定列表:
t = [(1, 2), (1, 1), (1, 5), (2, 3), (2, 6)]
您可以根据您的标准进行排序只需通过sorted
(或sort
)自tuples
(名单内)考虑所有元件,同时排序:
>>> sorted(t)
[(1, 1), (1, 2), (1, 5), (2, 3), (2, 6)]
即,在第一个匹配值冲突由在SEQ检查的下一个值解析直到其中一个值小于另一个值(即lexicographical sorting)。
如果找不到解决冲突的值,Python将保留输入序列中发现的顺序。这是排序的另一个特征,称为stability。
这是有效的,因为序列(包括元组)被比较*按字典顺序*,即比较第一项,然后第二项,如果这些是相等的,等等[Docs here。](https://docs.python .org/3.5/tutorial/datastructures.html#比较序列和其他类型) –
另外,如果你已经有一个列表中的元组并且不介意修改它,那么'list.sort()'将会是效率更高一点,因为它不必首先分配/复制它们到新列表('sorted'将会)。 –
@BenHoyt是的,是的,'排序'返回列表意味着它在交互式解释器中输出,而不需要通过按''显式'打印'或'repr',从而转化为更少的复制和粘贴。 :-) –