首页 > 解决方案 > 如何通过具有相同的索引对子列表进行分组?

问题描述

这是一个很难用语言表达的问题。我在建模软件 Rhinoceros 3D 中使用 Python。我有以下问题:

以我有以下数据为例。

l = [[1,2,3],[3,1.2,4],[1.000,2.0,3.0],[12,3,2],[1,5,3],[5,3,4],[1,6,2.0]]

我想将所有具有相同 z 值的数据分组到一个列表中:

所以结果应该是这样的:

l_2 = [[12,3,2],[1,6,2.0]]
l_3 = [[1,2,3], [1.000,2.0,3.0], [1,5,3]]
l_4 = [[3,1.2,4],[5,3,4]]

如何在不使用任何插件的情况下完成此操作?

标签: pythonrhino

解决方案


您可以使用值的键迭代l并将子列表附加到 dict z

d = {}
for x, y, z in l:
    d.setdefault(z, []).append([x, y, z])

d变成:

{3: [[1, 2, 3], [1.0, 2.0, 3.0], [1, 5, 3]], 4: [[3, 1.2, 4], [5, 3, 4]], 2: [[12, 3, 2], [1, 6, 2.0]]}

推荐阅读