我将message_id
和message_writer_id
保存在python列表中,如下所示:
composite_items = ['1:2', '2:2', '3:2', '4:1', '5:19', '20:2', '45:1', ...]
每个元素都是message_id:message_poster_id
。
从上面的列表中,我想提取所有set
的{{1}}。即我想在 message_writer_ids
之后提取包含所有唯一数字的set
,以便我最终得到:
:
在python中最有效的方法是什么?
目前,我想我会做类似的事情:
item_set = ['2', '1', '19']
想知道是否有更快的方法来实现这一目标。
答案 0 :(得分:2)
你可以像这样使用set comprehension:
new_set = {item.partition(":")[2] for item in composite_items}
设置理解速度很快,与str.split()
不同,str.partition()
只会拆分一次并停止寻找更多冒号。与str.split(maxsplit=1)
完全相同。
答案 1 :(得分:0)
composite_items = ['1:2', '2:2', '3:2', '4:1', '5:19', '20:2', '45:1', ...]
posters = dict()
for element in composite_items:
poster_id = element.split(":")[1]
posters[poster_id] = posters.get(poster_id, 0) + 1
您可以使用词典并计算message_poster_id
发送的邮件数量。 posters.get(poster_id,0) + 1
检查海报是否存在。如果存在,则获取其值(消息数)并将其递增1。
如果不存在,则将poster_id添加到字典并将其设置为0.