我有一个文本行列表,我希望根据分隔符右侧的相同值组合“:”如果右边的值相同,则将这些行组合在一起,并附加分隔符的左侧并且只保留分隔符右侧的一个副本。
列表:
file1: apple
file2: car
file1: car
file3: people
file4: stuff
file5: people
Desired_list:
file1: apple
file2,file1: car
file3,file5: people
file4: sutff
答案 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']