如何通过具有相同索引的子列表分组?

时间:2018-12-18 03:18:09

标签: python rhino

这是一个很难回答的问题。我在建模软件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]]

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

2 个答案:

答案 0 :(得分:1)

具有过滤功能的列表理解是一种方法:

l_2 = [x for x in l if x[2] == 2]
l_3 = [x for x in l if x[2] == 3]
l_4 = [x for x in l if x[2] == 4]

答案 1 :(得分:1)

您可以遍历l并使用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]]}