尝试检索已排序列表“second”的索引。“second”包含与“first”相同的值,并将重新排序为与“first”相同的顺序。我正在寻找一个索引列表“d”,其中包含来自旧“second”的重新排序索引。
尝试使用 zip 或 enumerate 检索“d”,但失败了。
first= [(11.373,0.354,6.154),(22.354,0.656,0.664),(33.654,33.546,31.131)] second=[(22.354,0.656,0.664),(33.654,33.546,31.131),(11.373,0.354,6.154)] second=sorted(second,key=first.index) print(first) print(second) [(11.373, 0.354, 6.154), (22.354, 0.656, 0.664), (33.654, 33.546, 31.131)] [(11.373, 0.354, 6.154), (22.354, 0.656, 0.664), (33.654, 33.546, 31.131)]
这里“second”的顺序与“first”相同。太棒了。但是我如何从“second”中检索重新排序的索引列表“d”呢?
我尝试过: d = [i[0] for i in sorted(enumerate(second), key=first.index)]
在此示例中,“d”应变为 [2,0,1]
这种类型的密钥在某种程度上阻碍了检索旧索引的可能性。有什么建议吗?
这是一种方法。
first= [(11.373,0.354,6.154),(22.354,0.656,0.664),(33.654,33.546,31.131)] second=[(22.354,0.656,0.664),(33.654,33.546,31.131),(11.373,0.354,6.154)] temp = sorted(second,key=first.index) #Sorted List. d = list(map(lambda x: second.index(x), temp)) #Fetch index from temp print(first) print(temp) print(d)
输出:
[(11.373, 0.354, 6.154), (22.354, 0.656, 0.664), (33.654, 33.546, 31.131)] [(11.373, 0.354, 6.154), (22.354, 0.656, 0.664), (33.654, 33.546, 31.131)] [2, 0, 1]