如何对JavaScript数组元素进行分组?附示例数据与预期输出
实现方法
这里提供两种Python实现方式,按需选择:
方法一:用字典统计分组(保留元素首次出现顺序)
遍历原始列表,用字典记录每个元素对应的子列表,遇到相同元素就追加进去,最后提取字典的值即可:
original_list = ['aaa','bbb','ccc','ddd','aaa','bbb','eee','ccc','aaa'] grouped = {} for item in original_list: grouped.setdefault(item, []).append(item) result = list(grouped.values()) print(result)
输出结果:
[['aaa', 'aaa', 'aaa'], ['bbb', 'bbb'], ['ccc', 'ccc'], ['ddd'], ['eee']]
方法二:排序后用itertools.groupby(按元素排序后的顺序)
先对列表排序让相同元素聚集,再用itertools.groupby分组:
from itertools import groupby original_list = ['aaa','bbb','ccc','ddd','aaa','bbb','eee','ccc','aaa'] sorted_list = sorted(original_list) result = [list(g) for _, g in groupby(sorted_list)] print(result)
输出结果:
[['aaa', 'aaa', 'aaa'], ['bbb', 'bbb'], ['ccc', 'ccc'], ['ddd'], ['eee']]
注意:两种方法的分组顺序有区别:方法一保留元素在原列表中首次出现的顺序;方法二会按元素的字典序排序后分组。如果原列表元素首次出现顺序和排序后一致,两种方法结果相同。
内容的提问来源于stack exchange,提问作者han
相关产品推荐
相关产品推荐

