我想按其TLDs对包含URL的列表进行分组
我的代码如下所示:
from itertools import groupby
from tldextract import extract
urls = sorted(urls, key=lambda x: extract(x).suffix)
grouped_urls = groupby(urls, key=lambda x: extract(x).suffix)
问题是我调用方法extract
2*n次(where n == len(urls)
),第一次调用n次是在排序时,第二次调用n次是在分组时。
有可能做n次吗?你知道吗
根据URL列表的大小,如果一次构建一个包含所有提取的满足项的列表,然后在索引列表上使用索引对排序和分组,则可以加快速度:
这样做的缺点是,您将为
O(1)
索引2n
次,如果列表上extract(x)
的总时间远远超过索引新列表所用的时间,那么速度将远远超过边际。你知道吗如果首先将后缀添加为元组,则可以按如下所示进行排序和分组,而无需重新计算:
在本例中,您将得到:
相关问题 更多 >
编程相关推荐