将同一列表值分组为一个列表值

时间:2019-07-06 09:08:09

标签: python arrays list

我有一个问题,要将多个列表值分为一个值。例如,我有此列表

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)]

5 个答案:

答案 0 :(得分:1)

尝试使用此代码

explicit

您还可以使用OrderedDict按顺序打印它

mylist = ["a", "b", "a", "c", "c"]
mylist = list(dict.fromkeys(mylist))
print(mylist)

答案 1 :(得分:1)

一个好主意是使用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更改为包含唯一值的列表

答案 2 :(得分:1)

方法1 -

您还可以使用numpy获得唯一值:-

import numpy as np
data_list = np.array(['A','A','B','B','B','C','C','C','C'])
np.unique(data_list)

方法2

您可以使用set获取唯一值,但是在set中结果将不包含相同的顺序。

new_list = list( set(data_list) )
new_list

希望对您有帮助。

答案 3 :(得分:1)

只需将您已经找到的itertools.groupby解决方案改编为仅使用key

>>> data_list = [A, A, B, B, B, C, C, C, C] # with A, B, C = "ABC"
>>> [(key, len(list(group))) for key, group in groupby(data_list)]
[('A', 2), ('B', 3), ('C', 4)]
>>> [key for key, group in groupby(data_list)]
['A', 'B', 'C']

答案 4 :(得分:0)

您是否尝试过研究集合?

您可以先使用this.columnDefs = [ { headerName: this.pageData["tbm.line.list.grid.phonenumber"], field: 'tn', /*sort: "asc",*/ sortable: true, filter: "agTextColumnFilter", filterParams: { filterOptions: ['contains'], apply: true }, //tooltip: (params) => 'Address: ' + params.value, headerTooltip: 'Phone Number', // editable: true, // checkboxSelection: true, // headerCheckboxSelection: true, // headerCheckboxSelectionFilteredOnly: true, width: 150 }, 将原始data_list投射到集合中,然后再次将其投射到列表中。

set(data_list)

集合的作用是它们仅包含唯一值。因此,为什么我们在您的data_list = [A,A,B,B,B,C,C,C,C] print(list(set(data_list))) #OUTPUT: ['A', 'B', 'C'] 变量上运行set()函数时,只剩下唯一的值。 python中的集合以“花括号”表示,就像字典中的data_list一样,但是集合不包含key:value对。 { }函数将您的集合转换为列表,以便将来将其视为列表。