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

发布于 2021-01-29 14:10:55

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

_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]]

那可能吗?

关注者
0
被浏览
108
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    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']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看