我有以下格式的列表:
L = ['apples oranges x',
'bananas apples y',
'apples oranges z']
对于 L 中的每个项目,如果 item.split()[0:2] 匹配另一个 item.split()[0:2] (即,'apples oranges' 匹配 'apples oranges')那么我需要输出单个 item.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']
关于python - 从列表列表中提取部分重复项;返回单个匹配项以及每个重复项的来源记录; Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631062/