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',從而轉化爲更少的複製和粘貼。 :-) –