从列表列表中提取部分重复项;返回单个匹配项,并记录每个副本的来源;python
我有以下格式的列表:从列表列表中提取部分重复项;返回单个匹配项,并记录每个副本的来源;python,python,text-processing,Python,Text Processing,我有以下格式的列表: L = ['apples oranges x', 'bananas apples y', 'apples oranges z'] 对于L中的每个项目,如果item.split()[0:2]与另一个项目匹配。split()[0:2](即“Apple oranges”与“Apple oranges”)匹配,则我需要输出单个项目。split()[0:2]后跟记录部分重复行原点的标记。标签来自每个项目的索引3(即x、y或z) 因此,L的输出是L2: L2
L = ['apples oranges x',
'bananas apples y',
'apples oranges z']
对于L中的每个项目,如果item.split()[0:2]与另一个项目匹配。split()[0:2](即“Apple oranges”与“Apple oranges”)匹配,则我需要输出单个项目。split()[0:2]后跟记录部分重复行原点的标记。标签来自每个项目的索引3(即x、y或z)
因此,L的输出是L2:
L2 = ['apples oranges x z',
'bananas apples y']
有什么想法吗
d = collections.defaultdict(list)
for line in L:
name, value = line.rsplit(' ',1)
d[name].append(value)
然后你会有这样的口述:
{'bananas apples ': ['y'], 'apples oranges ': ['x', 'z']}
因此,您只需格式化键和值:
[key + ' '.join(values) for key, values in d.items()]
结果将是:
['bananas apples y', 'apples oranges x z']
然后你会有这样的口述:
{'bananas apples ': ['y'], 'apples oranges ': ['x', 'z']}
因此,您只需格式化键和值:
[key + ' '.join(values) for key, values in d.items()]
结果将是:
['bananas apples y', 'apples oranges x z']
非常简洁,解释得很好。我在看Python文档上的其他内容时,遇到了这个异常相似的示例@user183037这是defaultdict的一个常见用法:)非常简洁,解释得很好。我在Python文档中查看了其他内容,遇到了这个异常相似的示例@user183037这是defaultdict的常见用法:)