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

2024-05-13 09:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我想根据另一个列表li重新排列上面的嵌套列表:

^{pr2}$

其中li值对应于嵌套列表的第二个元素nli,那么我如何根据li的顺序重新排列{},其中intern对应于每个嵌套列表的第二个元素nli 重新排列后的输出nli假设为:

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

还想知道我在哪里可以学到更多关于这类操作的信息 提前谢谢!!在


Tags: 信息元素列表顺序liinternpr2nli
3条回答

首先按需要的键映射(创建索引):

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

现在使用映射创建新列表:

^{pr2}$

您可以首先创建一个dict,它将元素的值映射到它在列表li中出现的顺序。在

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

然后使用order根据每个[1]元素对原始列表进行排序。在

^{pr2}$

可以使用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]))

输出:

^{pr2}$

相关问题 更多 >