假設我有一個參考串列:
A = ['X_0', 'Z_0', 'X_1', 'Y_0', 'Z_1', 'X_2', 'Y_1', 'Z_2', 'Y_2']
以及(示例)較短的串列:
B = ['Z_0', 'X_1', 'X_0']
如何排序B以使元素的順序與 中提供的順序匹配A?因此,最終結果應該與這樣的順序相匹配A:
B_final = ['X_0', 'Z_0', 'X_1']
uj5u.com熱心網友回復:
您希望按 A 中值的索引對串列 B 進行排序,因此;
sorted(B, key=A.index)
這將按 A 中的每個值索引對 B 進行排序。
如果您使用的是一個很長的串列,index 的效率不是很高,因為它會在串列中搜索每個值,因此您可能想要通過字典進行排序。
首先創建一個串列索引值的字典;
>>> C = {val:ix for ix,val in enumerate(A)}
...然后按字典值排序,這比串列中的線性搜索效率高得多;
>>> sorted(B, key=C.get)
['X_0', 'Z_0', 'X_1']
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364700.html
