簡體   English   中英

如何根據特定索引重新排列嵌套列表

[英]How to rearrange nested list based on particular index

我有一個嵌套列表,如下所示:

nli=[[123,12],[124,15],[127,19],[12,6]]

我想根據另一個列表li重新排列上述嵌套列表:

li=[15,6,12,19]

其中li值對應於嵌套列表nli的第二個元素因此,我如何基於li的順序重新排列nli ,而該intern對應於每個嵌套列表nli的第二個元素,重新排列nli后的輸出應該是:

[[124, 15], [12, 6], [123, 12], [127, 19]]

還想知道我在哪里可以了解有關此類操作的更多信息?

您可以首先創建一個dict ,將元素的值映射到列表li出現的順序。

>>> order = {k: i for i, k in enumerate(li)}
>>> order
{19: 3, 12: 2, 6: 1, 15: 0}

然后使用該order基於每個[1]元素對原始列表進行排序。

>>> sorted(nli, key = lambda i: order[i[1]])
[[124, 15], [12, 6], [123, 12], [127, 19]]

您可以使用nli每個值中最后一個元素的索引值進行排序:

nli=[[123,12],[124,15],[127,19],[12,6]]
li=[15,6,12,19]
new_list = sorted(nli, key=lambda x:li.index(x[-1]))

輸出:

[[124, 15], [12, 6], [123, 12], [127, 19]]

首先按想要的鍵映射(創建索引):

by_second_item = {item[1]: item for item in nli}

現在使用映射來創建新列表:

rearranged = [by_second_item[i] for i in li]
# or: list(map(by_second_item.get, li))
[j for i in li for j in nli if j[1]==i]
#Output
#[[124, 15], [12, 6], [123, 12], [127, 19]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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