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

发布于 2024-12-07 20:39:25 字数 398 浏览 1 评论 0原文

我有一个以下格式的列表:

L = ['apples oranges  x',
     'bananas apples  y',
     'apples oranges  z']

对于 L 中的每个项目,如果 item.split()[0:2] 与另一个 item.split()[0:2] 匹配(即“苹果橙子”与“苹果橙子”匹配) )然后我需要输出一个 item.split()[0:2] ,后跟记录部分重复行的起源的标签。标签来自每个项目的索引 3(即 x、y 或 z)。

那么,L 的输出将是 L2:

L2 = ['apples oranges x z',
     'bananas apples y']

有什么想法吗?

I have a list in the following format:

L = ['apples oranges  x',
     'bananas apples  y',
     'apples oranges  z']

For every item in L, if item.split()[0:2] matches another item.split()[0:2] (i.e., 'apples oranges' matches 'apples oranges') then I need to output a single item.split()[0:2] followed by the tags recording the origin of the partially duplicated line. The tags come from index 3 of each item (i.e, x, y or z).

So, the output of L would be L2:

L2 = ['apples oranges x z',
     'bananas apples y']

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绿光 2024-12-14 20:39:25
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']
d = collections.defaultdict(list)

for line in L:
    name, value = line.rsplit(' ',1)
    d[name].append(value)

then you'll have a dict like that:

{'bananas apples ': ['y'], 'apples oranges ': ['x', 'z']}

So you only need to format the keys and values:

[key + ' '.join(values) for key, values in d.items()]

And the result will be:

['bananas apples y', 'apples oranges x z']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文