python - 按内部列表中元素的总和对元组列表进行排序
问题描述
我正在尝试生成一个函数,该函数返回 list>tuple>list 组合中各个数字之和的排序列表。例子:
unsorted_list = [('red', [5, 2, 1]), ('blue', [1, 0, 1]), ('green', [2, 3, 2])]
程序需要查看列表中的数字,将它们相加 (8,2,7),然后对数字进行排序,使排序后的列表与未排序的列表格式相同,但按数字之和排序。
要生成这样的列表:
sorted_list = [('blue', [1, 0, 1]), ('green', [2, 3, 2]), ('red', [5, 2, 1])]
注意数字本身不会改变顺序 - 这是一个关键要求,因为它与坐标有关。只是基于数字总和的列表元素的顺序。
解决方案
您可以使用lambda
函数作为键进行排序。此 lambda 函数返回未排序列表中元组的列表元素的总和:
>>> sorted(unsorted_list, key=lambda x: sum(x[1]))
[('blue', [1, 0, 1]), ('green', [2, 3, 2]), ('red', [5, 2, 1])]
推荐阅读
- javascript - 使用 Fetch 流式传输音频
- google-cloud-platform - 如何找到 Airflow 后端数据库的架构?
- cmake - add_subdirectory 两次具有不同的属性
- c - 有人可以指出我的代码中的错误吗
- laravel - Laravel - 在 Eloquent 模型上调用 query() 方法有什么好处
- python - readline().strip() 的目的是什么?
- c++ - 如何从 Esri Grid (osg) 有效地绘制地形模型?
- python - Python 包未在 site-packages 文件夹中创建
- wiremock - WireMock 可能设置可选参数吗?
- c# - 通过名单
通过 AddRange 到 SQLite 查询