python - 如何通过具有相同的索引对子列表进行分组?
问题描述
这是一个很难用语言表达的问题。我在建模软件 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]]
如何在不使用任何插件的情况下完成此操作?
解决方案
您可以使用值的键迭代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]]}
推荐阅读
- android - 我有一个 sqlite 表,我想在每个月底从该表中删除一行。有没有办法在Android中做到这一点
- reactjs - Material UI Autocomplete 以表格格式显示建议,并附有标题
- php - 如何使用 PHP preg_match 捕获两个括号之间的字符串并忽略所有外部?
- python - 获取 Python 3 字符串中的第二个单词
- arrays - 在 C 中声明字符串的更好方法是什么?
- forms - C# 按下按钮显示面板,在它们之间切换不起作用
- python - Sqlalchemy 在使用 func.sum 时保留对象
- python - /invoice/ Flowable 处的布局错误
与单元格(0,0) - python - 将 pytorch_model.bin 拆分为块后无法从 pytorch 检查点加载权重
- rest - 使用 Delphi XE5 RestClient 的 SSL3_GET_RECORD 错误