首页 > 解决方案 > Python:按第二个列表的元素对第一个列表的元素进行排序

问题描述

dict = {“Liz”: 4, “Garry”: 4, “Barry”:6}
list1 = []
for m in sorted(result_dict, key=result_dict.get, reverse=True):
    list1.append(m)

之后我们有两个列表:

list1 = ["Barry","Liz", "Garry"]
list2 = [“Garry”, “Liz”, “Barry”]

我希望输出类似于 - 如果元素在 dict 中具有相同的值,则在 list1 中它们应该按 list2 的顺序排列 -> 例如,如果 Garry 在 list2 中排在第一位,那么在 list1 中他也应该在“Barry”之后排在第一位:

list1 = ["Barry", "Garry", "Liz"]

标签: python

解决方案


key函数可以返回一个元组来打破平局。所以在你的情况下

d = {"Liz": 4, "Garry": 4, "Barry": 6}
list2 = ["Garry", "Liz", "Barry"]
list1 = sorted(d, key=lambda x: (d.get(x), -list2.index(x)), reverse=True)
print(list1)

将打印

['Barry', 'Garry', 'Liz']

推荐阅读