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]]
这应该是最有效的解决方案。