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

时间:2017-02-20 21:50:07

标签: python

我有一个文本行列表,我希望根据分隔符右侧的相同值组合“:”如果右边的值相同,则将这些行组合在一起,并附加分隔符的左侧并且只保留分隔符右侧的一个副本。

列表:

file1: apple
file2: car
file1: car
file3: people
file4: stuff
file5: people

Desired_list:

file1:       apple
file2,file1: car
file3,file5: people
file4:       sutff

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你可以通过很多方式实现这一目标。

这是通过使用字典作为辅助数据结构来实现此目的的一种方法。

我创建了一个词典,我将每个右侧值存储为键,将左侧值存储为值,如果该键已存在,则我将该值附加到相关文件中。< / p>

最后,我将字典转换为所需的列表。

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