python - 如何根据列表中元组的第二个元素的总和对列表进行排序?
问题描述
我的担忧涉及我的一个变量,它在列表中具有如下的元组。
test = [(['a','b','c'],[3,2,5]),(['d','e','f'],[1,5,6]),(['g','h','j'],[1,2,4])]
例如,我正在尝试获取列表的第二个元组元素的总和,[3,2,5]
并根据该总和对它们进行排序。所以这个总和的结果应该是。
result1 = [(['a','b','c'],[10]),(['d','e','f'],[12]),(['g','h','j'],[7])]
那么我预期的最终结果应该按降序排序。
result = [['d','e','f'],['a','b','c'],['g','h','j']]
解决方案
优雅的单排:
result = [a for a, b in sorted(test, key = lambda x : sum(x[1]), reverse=True)]
sorted
使用传递的迭代返回一个排序列表,在这种情况下test
key
定义排序的基础。这是一个 lambda 表达式,它接受元组x
并返回元组第二部分的总和sum(x[1])
reverse
设置为降序排序
最后,我们使用列表推导去除数字部分b
,只保留字母a
推荐阅读
- mysql - {"timestamp": 1567422726395,"status": 404,"error": "Not Found","message": "No message available","path": "/SpringRestfulWebServiceHibernate/add/" }
- dart - 在 Flutter Web 中发生 XMLHttpRequest 错误时启用 CORS
- html - 自定义 CSS 代码导致 chrome 中的滚动条行为不稳定
- wso2 - 在我的本地计算机上重建 WSO2 存储库的正确顺序
- python - 为什么整个计算的一部分(在这种情况下为benchmking_f)并行花费的时间比顺序方法中的时间长得多?
- r - 添加向量时将 NA 视为零
- jquery - Fullcalendar:如何将所选月份作为事件源中的参数发送?
- amazon-web-services - AWS ALB 重定向到 URL
- python - Flask-sqlalchemy - 在单个查询中计算不同的组类别
- javascript - 如何解决 TypeError: arr[Symbol.iterator] is not a function in my React project