Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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_Python 2.7_Nlp - Fatal编程技术网

Python 是否有方法根据标签对列表中的相同元素进行分组?

Python 是否有方法根据标签对列表中的相同元素进行分组?,python,python-3.x,python-2.7,nlp,Python,Python 3.x,Python 2.7,Nlp,我有如下数据: data = [[234,"balablablabla"],[254,"ababaabbla"],[274,"nnnnnnnnnnblabla"],[284,"cccccccccblabla"]] 我有一个标签列表: labels=[0,0,1,0] 我希望在输出中有:将具有相同标签的数据的id放在同一个列表中,sam列表中的[234254284],因为标签1的[234,“Balabababla”

我有如下数据:

data = [[234,"balablablabla"],[254,"ababaabbla"],[274,"nnnnnnnnnnblabla"],[284,"cccccccccblabla"]]
我有一个标签列表:

labels=[0,0,1,0]
我希望在输出中有:将具有相同标签的数据的id放在同一个列表中,sam列表中的[234254284],因为标签1的[234,“Balabababla”]和[254,“Ababababala”]和[284,“CCCCCCCCCCCCCCC Blabla”]的标签分别为0和[274,“nnnnnnnnnn Blabla”]:

results =  [[234,254,284],[274]]

PS:在这个简短的示例中,标签是0或1,但它可以是0,1,2,…,1000

更具python风格的解决方案是使用
defaultdict
。这将为您提供作为字典键的标签和作为相应值的标签列表

data = [[234,"balablablabla"],[254,"ababaabbla"],[274,"nnnnnnnnnnblabla"],[284,"cccccccccblabla"]]
labels=[0,0,1,0]
result=[[] for i in range(max(labels)-min(labels)+1)]
for i in range(len(labels)):
    result[labels[i]].append(data[i][0])
print(result)
>>从集合导入defaultdict
>>>数据=[[234,“巴拉布拉”],
[254,“阿巴巴巴拉”],
[274,“nnnnnnnn blabla”],
[284,“CCCCCCBlabla”]]
>>>标签=[0,0,1,0]
>>>结果=defaultdict(列表)
>>>对于标签,zip中的行(标签、数据):
...     结果[label]。追加(第[0]行)
...
>>>打印(结果)
defaultdict(,{0:[2342584],1:[274]})
现在假设存在重复项,并且希望每个标签上都有唯一的数据,那么可以使用
defaultdict(set)
对象

数据=[[234,“巴拉布拉”], [254,“阿巴巴巴拉”], [234,“巴拉布拉”],#重复值 [274,“nnnnnnnn blabla”], [284,“CCCCCCBlabla”]] >>>标签=[0,0,0,1,0] >>>结果=默认DICT(设置) >>>对于标签,zip中的行(标签、数据): ... 结果[标签]。添加(第[0]行) ... >>>打印(结果) defaultdict(,{0:{234284254},1:{274})