【发布时间】:2017-03-23 14:15:51
【问题描述】:
对(x, y) 的元组列表进行排序的最佳方法是什么。我想根据x 进行排序,但是当有相同值的x 时,我想根据y 进行拆分和排序。
【问题讨论】:
标签: python list sorting tuples python-3.5
对(x, y) 的元组列表进行排序的最佳方法是什么。我想根据x 进行排序,但是当有相同值的x 时,我想根据y 进行拆分和排序。
【问题讨论】:
标签: python list sorting tuples 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)]
也就是说,第一个匹配值的冲突通过检查序列中的下一个值来解决,直到其中一个值小于另一个(即lexicographical sorting)。
如果没有找到解决冲突的值,Python 将保留在输入序列中找到的顺序。这是排序的另一个特性,称为stability。
【讨论】:
list.sort() 会更有效率,因为它不必将它们分配/复制到新的首先列出(sorted will)。
sorted 返回列表意味着它在交互式解释器中输出,需要通过按 <enter> 明确地 print 或 repr 它来转换为减少复制和粘贴。 :-)