python - 如何按第一个元素对列表中的列表进行分组?
问题描述
我有一个看起来像这样的列表:
big_list = [[0,5,70],[0,3,20],[0,4,60],[0,6,30],
[1,6,50],[1,4,30],[1,3,70],
[2,4,20],[2,5,40],
[69,420,20]]
如何将其变成此列表,其中所有列表按每个列表中的第一个数字组合成列表:
big_list_sorted = [[[0,5,70],[0,3,20],[0,4,60],[0,6,30]],
[[1,6,50],[1,4,30],[1,3,70]],
[[2,4,20],[2,5,40]],
[[69,420,20]]]
此外,为了便于阅读,我将列表放入原始 big_list 中,但它们不会按顺序排列。
解决方案
您可以按字典中的第一个元素对列表进行分组,并使用以下方法获取结果.values()
:
groups = {}
for l in big_list:
groups.setdefault(l[0], []).append(l)
big_list_sorted = list(groups.values())
print(big_list_sorted)
# [[[0, 5, 70], [0, 3, 50], [0, 4, 60], [0, 6, 30]], [[1, 6, 50], [1, 4, 30], [1, 3, 70]], [[2, 4, 20], [2, 5, 40]], [[69, 420, 20]]]
推荐阅读
- vue.js - Vue.js - 在mounted() 中调用data() 会引发错误
- excel - 将字符串拆分为行时跳过括号中的单词计数,以便行具有相同数量的不在括号内的单词
- node.js - 获取节点js中的子字符串
- node.js - 同时维护 node.js 和 electron 的原生模块依赖
- angular - 如何根据值创建动态标签
- networkx - 选择考虑边缘标签的 networkx 布局
- java - Java 永远无法“找到或加载”主类
- image - 如何在 Symfony 4 中上传和保存不带捆绑包的图像
- c - 如何在不破坏列表的情况下释放指针?
- swift - Swift:删除 TableView 中的一行(核心数据)