Python 如何基于相同的值组合多行

Python 如何基于相同的值组合多行,python,Python,我有一个要根据分隔符右侧的相同值组合的文本行列表:“如果右侧的值相同,则将这些行组合在分隔符左侧,并仅保留分隔符右侧的一个副本 名单: file1:apple 文件2:汽车 文件1:汽车 文件3:人 文件4:东西 文件5:人 所需列表: file1:apple 文件2,文件1:汽车 文件3、文件5:人 文件4:sutff 您希望根据分隔符拆分行,然后将它们添加到嵌入词典的列表中。我喜欢用这个 from collections import defaultdict d = defaultdict

我有一个要根据分隔符右侧的相同值组合的文本行列表:“如果右侧的值相同,则将这些行组合在分隔符左侧,并仅保留分隔符右侧的一个副本

名单:

file1:apple
文件2:汽车
文件1:汽车
文件3:人
文件4:东西
文件5:人
所需列表:

file1:apple
文件2,文件1:汽车
文件3、文件5:人
文件4:sutff

您希望根据分隔符拆分行,然后将它们添加到嵌入词典的列表中。我喜欢用这个

from collections import defaultdict
d = defaultdict(list)
for line in textfile:
    fname, val = line.split(':')
    d[val.strip()].append(fname.strip())

for key in d:
    print ','.join(d[key]) + ':' + key

你可以用很多方法来做

下面是一种使用字典作为辅助数据结构的方法

我已经创建了一个字典,我将每个右侧值存储为一个键,将左侧值存储为一个值,如果该键已经存在,我会将相关文件附加到该值

最后,我将把字典转换成所需的列表

li = ["file1: apple","file2: car","file1: car","file3: people","file4: stuff","file5: people"]

tmp_dict = {}
for item in li:
    l, r  = item.split(":")
    tmp_dict[r] = tmp_dict[r] + "," + l if tmp_dict.has_key(r) else l

res = [v + ":" + k for k,v in tmp_dict.items()]

print res

>>> ['file4: stuff', 'file2,file1: car', 'file1: apple', 'file3,file5: people']

似乎你可以使用a)字典或b)矩阵,其中文件作为行,其他东西作为列(如
CountVectorizer
对象)。我不知道如何处理它。如果你能给我一个提示,我可以试试。我的列表只是一个我上面显示的格式的文件。谢谢,我会试试的。