首页 > 解决方案 > 将相同的列表值分组为一个列表值

问题描述

我有一个将多个列表值分组为一个值的问题。例如我有这个列表

data_list = [A,A,B,B,B,C,C,C,C]

然后我想把它变成这个

data_list = [A, B, C]

我已经尝试使用itertools.groupby但我仍然找不到我的解决方案

from itertools import groupby
data_list = [A,A,B,B,B,C,C,C,C]

data_group = [(key, len(list(group))) for key, group in groupby(data_list)]
print(data_group)

预期的输出是data_group = [A, B, C]

实际结果是data_group = [(A, 2), (B, 3), (C, 4)]

标签: pythonarrayslist

解决方案


一个好主意是使用 python 集。根据文档,描述的一部分是:

“集合是没有重复元素的无序集合。基本用途包括成员资格测试和消除重复条目。”

例如:

my_list = [1,1,2,2,3,3]
my_set = set(my_list)
print(my_set)
type(my_set)

将输出:

{1,2,3}
set

请注意,生成的数据类型是set 因此,如果您希望结果是列表,可以将其转换回一个:

unique_values = list(set(my_list))

如果您打算在代码中大量使用它,那么一个函数会有所帮助:

def giveUnique(x):
    return list(set(x))

my_list = giveUnique(my_list)

这将使用包含唯一值的列表更改 my_list


推荐阅读