Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一个“点”上迭代;分组;列表_Python_Python 3.x - Fatal编程技术网

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]
。谢谢你,希莉。