Python 在一个“点”上迭代;分组;列表
评论后编辑 我有一个列表,如下所示:Python 在一个“点”上迭代;分组;列表,python,python-3.x,Python,Python 3.x,评论后编辑 我有一个列表,如下所示: old_list = [['A', 1, 2], ['A', 5, 3], ['A', 3, 2], ['B', 1, 1], ['B', 2, 5], ['C', 3 , 1], ['C', 9, 2]] 我希望我的函数对其进行迭代,这样输出就是一个列表,它根据组标识符(索引0处的字母)对内部列表的数值进行分组。请参见下面的预期输出示例 new_list = [[1, 2, 5, 3, 3, 2], [1, 1, 2, 5], [3, 1, 9, 1]]
old_list = [['A', 1, 2], ['A', 5, 3], ['A', 3, 2], ['B', 1, 1], ['B', 2, 5], ['C', 3 , 1], ['C', 9, 2]]
我希望我的函数对其进行迭代,这样输出就是一个列表,它根据组标识符(索引0处的字母)对内部列表的数值进行分组。请参见下面的预期输出示例
new_list = [[1, 2, 5, 3, 3, 2], [1, 1, 2, 5], [3, 1, 9, 1]]
使用dict,您可以更容易地获得类似的结果。只需创建一个dict并检查该组是否已经存在 如果没有,则添加组并添加原始列表片段的后部分
项[1:://code>(此运算符使用项的条目从索引1开始创建一个新列表)
如果确实存在,则使用新值扩展组
old_list = [['A', 1, 2], ['A', 5, 3], ['A', 3, 2], ['B', 1, 1], ['B', 2, 5], ['C', 3 , 1], ['C', 9, 2]]
new_dict = {}
for item in old_list:
group = item[0]
if group not in new_dict:
new_dict[group] = item[1:]
else:
new_dict[group].extend(item[1:])
print(new_dict)
# Output:
{'A': [1, 2, 5, 3, 3, 2], 'B': [1, 1, 2, 5], 'C': [3, 1, 9, 2]}
如果您想要问题中要求的列表表单,只需在末尾添加以下行即可
new_list = [item for group, item in new_dict.items()]
print(new_list)
# Output:
[[1, 2, 5, 3, 3, 2], [1, 1, 2, 5], [3, 1, 9, 2]]
输入正确吗?因为它不是列表列表,而是包含一个列表项的多个列表:[[a',1,2]]
。我认为这就是它复杂化的原因。下面是列表列表的样子(注意并非所有元素都有两个括号):[[a',1,2],'a',5,3],'a',3,2],'B',1,1],'B',2,5],'C',3,1],'C',9,2]
。谢谢你,希莉。