一尘不染

根据另一个列表的顺序重新排列列表

python

我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单

_list1 = ["keyName", "test1", "test2"]
_list2 = ["keyName", "test2", "test1"]

我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出:

_list1 = ["keyName", "test1", "test2"]
_list2 = ["keyName", "test1", "test2"]

很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。

如果_list2是列表列表怎么办?

_list2 = [["test1", "test2", "keyName"], ["test2", "test1", "keyName"]]

所需输出:

_list2 = [["keyName", "test1", "test2"], ["keyName", "test1", "test2"]]

还有一个假设:如果我想使用_list1作为键对其他任何对象列表进行排序,该怎么办

_list2 = [[object1, object2, object3], [object1, object2, object3]]

哪里:

object1.Name = "keyName"
object3.Name = "test1"
object2.Name = "test2"

如此有效,我期望输出:

_list2 = [[object1, object3, objec1], [object1, object3, objec1]]

那可能吗?


阅读 186

收藏
2021-01-20

共1个答案

一尘不染

In [84]: _list1 = ["keyName", "test1", "test2"]

In [85]: d = {k:v for v,k in enumerate(_list1)}

In [86]: _list2 = ["keyName", "test2", "test1"]

In [87]: _list2.sort(key=d.get)

In [88]: _list2
Out[88]: ['keyName', 'test1', 'test2']
2021-01-20