[英]Sort lists in a nested list based on the argsort of the 0th list
根據列表中的第一個列表對列表嵌套進行排序的最巧妙的方法是什么?
排序之前
>>> list_of_things = [[100,300,200],[t,u,v]]
經過排序
>>> [[100,200,300],[t,v,u]]
到目前為止,我已經使用搜索找到了可以用來排序的索引
>>> import numpy as np
>>> sort_index=np.argsort(list_of_things[0])
但是我還沒有找到一種在sort_index上為兩個子列表建立索引的pythonic方法。
有什么想法嗎? 謝謝!
print(arr)
array([['100', '300', '200'],
['t', 'u', 'v']],
dtype='<U21')
首先, argsort
第0 個列表進行argsort
:
idx = np.argsort(arr[0])
print(idx)
array([0, 2, 1])
現在,只需使用numpy indexing
:
arr = arr[:, idx]
print(arr)
array([['100', '200', '300'],
['t', 'v', 'u']],
dtype='<U21')
嘗試使用來自more_itertools
的工具,該工具是more_itertools
可迭代對象進行並行排序的第三方庫。
首先安裝庫:
> pip install more_itertools
碼
from more_itertools import sort_together
iterables = [[100, 300, 200], ["t", "u", "v"]]
sort_together(iterables)
# [(100, 200, 300), ('t', 'v', 'u')]
默認情況下,所有可迭代項均按第0個索引排序。 可以通過key_list
參數調整此排序優先級。
有關more_itertools
信息,請參見more_itertools
文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.