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

Python 如何根据特定索引重新排列嵌套列表,python,python-2.7,list,nested-lists,Python,Python 2.7,List,Nested Lists,我有一个嵌套列表,如下所示: nli=[[123,12],[124,15],[127,19],[12,6]] 我想根据另一个列表重新排列上面的嵌套列表li: li=[15,6,12,19] 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])) 其中li值对应于嵌套列表的第二个元素nli,那么如何根据li的顺序重新排列nli,哪个

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

nli=[[123,12],[124,15],[127,19],[12,6]]
我想根据另一个列表重新排列上面的嵌套列表
li

li=[15,6,12,19]
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]))
其中
li
值对应于嵌套列表的第二个元素
nli
,那么如何根据
li
的顺序重新排列
nli
,哪个intern对应于每个嵌套列表的第二个元素
nli
重新排列后的输出
nli
假设为:

[[124, 15], [12, 6], [123, 12], [127, 19]]
我还想知道我在哪里可以学到更多关于这类操作的知识
提前谢谢

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

li=[15,6,12,19]
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))

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

>>> order = {k: i for i, k in enumerate(li)}
>>> order
{19: 3, 12: 2, 6: 1, 15: 0}
然后使用该
顺序
根据每个
[1]
元素对原始列表进行排序

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

这应该是最有效的解决方案。