如何用itertools.groupby转换分组值以提取数字列表?
解决itertools.groupby分组后提取指定元素的问题
你可以通过列表推导式提取分组后每个元组的第二个元素,修改循环内的打印逻辑即可:
from itertools import groupby data = [('a', 1), ('b', 2), ('b', 3), ('c', 4), ('c', 5)] _sorted_data = sorted(data, key=lambda element: element[0]) _res = groupby(_sorted_data, key=lambda x: x[0]) for key, value in _res: # 提取每个元组的第二个元素组成新列表 print(key, [item[1] for item in value])
运行这段代码后,就能得到你期望的输出:
a [1] b [2, 3] c [4, 5]
关键说明
groupby返回的value是一个迭代器,每个元素是原数据中的完整元组(比如('b', 2))。用[item[1] for item in value]遍历这个迭代器,只保留每个元组的第二个元素,就能得到目标格式的列表。
内容的提问来源于stack exchange,提问作者Learn Hadoop
相关产品推荐
相关产品推荐

