我在 Python 将一些元组与公共(public)项合并时遇到问题。关键是我只想拥有一个元组,但也可以保留不同的项目,可能是通过将它们连接到它们所在的位置来实现的。
我正在分析与视频相关的约 10 万条字幕,并专门寻找其中的动词。 我有一个很大的元组列表,如下所示:
(verb, caption, video_id)
重点是,如果标题中存在多个动词,则在我的列表中它会出现多次:
list = [(verb1, caption, video_id), (verb2, caption, video_id), (verb3, caption, video_id)]
我想获得这个:
(verb1|verb2|verb3, caption, video_id)
(|
不是强制性的,我只是想将所有 3 个动词放在元组的第一个位置)
我需要这个,因为我要将其输出到 csv 文件以进行手动检查,并且我想避免多次检查相同的 caption
和 video_id
。
这是一个更可靠的例子:
list = [
('look', 'Mario takes the bag, looks around and runs away.','video_id_001'),
('run', 'Mario takes the bag, looks around and runs away.','video_id_001'),
('take', 'Mario takes the bag, looks around and runs away.','video_id_001')
]
最佳答案
collections.defaultdict
是你的 friend 。
from collections import defaultdict
lst = [('verb1', 'caption', 'video_id'),
('verb2', 'caption', 'video_id'),
('verb3', 'caption', 'video_id')]
aggregator = defaultdict(list)
# first create a dictionary mapping (caption, video_id) -> verb
for i, j, k in lst:
aggregator[(j, k)].append(i)
# then reverse dictionary
result = [tuple(('|'.join(v), k[0], k[1])) for k, v in aggregator.items()]
# [('verb1|verb2|verb3', 'caption', 'video_id')]
关于python - 如果元组有共同元素,则合并 Python 中的元组,并将所有不同元素连接到其位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467833/