python - 从列表列表中提取部分重复项;返回单个匹配项以及每个重复项的来源记录; Python

标签 python text-processing

我有以下格式的列表:

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/

相关文章:

python - 在 Django Admin 中,选项可以依赖于其他值吗?

Python Cookie 问题

python - django admin更改 View 不显示图像缩略图

awk - 比较两个不同长度文件之间的公共(public)值 (Linux)

linux - 使用 -v 选项反转多行 grep 结果,但 grep -A 不起作用

c++ - 通过发音查找相似词 - 算法、方法、库

python - 有没有办法在Python中执行文本的概念匹配?

python - 在 apache 中使用子进程时出现“命令未找到”错误

python - numpy.resize 和 numpy.reshape 函数如何在 python 内部工作?

Python删除额外的特殊unicode字符