python - 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"]
解决方案
该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']
推荐阅读
- gitlab-ci - Gitlab CI 作业缺少以前作业中的工件
- c# - ASP.Net Core MVC 客户端验证:属性不显示
- html - 在视频标签中使用 referrerPolicy
- java - Maven:构建项目批处理
- c# - 无法执行 Oracle 查询 | OracleException (0x80131938): ORA-00947
- linux - Bash:将变量的部分哈希与固定字符串进行比较
- operating-system - 如何找到虚拟内存中翻译表的数量?
- r - 更改风险表图例的字体大小
- arrays - 在 HLSL 中,如何设置数组的所有值?
- asp.net-core - 启动时如何将敏感数据传递给IConfiguration接口?