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
对象)。我不知道如何处理它。如果你能给我一个提示,我可以试试。我的列表只是一个我上面显示的格式的文件。谢谢,我会试试的。