簡體   English   中英

根據第0個列表的argsort對嵌套列表中的列表進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM