繁体   English   中英

根据条件分隔列表项-Python

[英]Separating list items based on condition - Python

因此,我有一个具有不同目录结构的URL列表。 即:

xyz.com/1/
xyz.com/2/
xyz.com/3/
xyz.com/4/
xyz.com/5/
abc.com/6/
abc.com/7/
abc.com/8/
abc.com/9/
abc.com/10/

我需要遍历此列表并按python中的tld(顶级域)分组。 我正在使用开源python库以循环方式提取tld; 即:

for item in list:
    registered_domain = tldextract.extract(item).registered_domain

我的问题是,当我遍历混合网址列表时,如何将所有具有相同基本tld的网址分组到单独的列表中; 即:

Output:
    [xyz.com/1/,xyz.com/2/,xyz.com/3/,xyz.com/4/,xyz.com/5/]
    [abc.com/6/,abc.com/7/,abc.com/8/,abc.com/9/,abc.com/10/]

您可以将collections.defaultdictstr.split结合使用。 这将创建一个将域映射到URL的字典。

from collections import defaultdict

L = ['xyz.com/1/', 'xyz.com/2/', 'xyz.com/3/', 'xyz.com/4/', 'xyz.com/5/',
     'abc.com/6/', 'abc.com/7/', 'abc.com/8/', 'abc.com/9/', 'abc.com/10/']

d = defaultdict(list)

for url in L:
    d[url.split('/', 1)[0]].append(url)
    # alternatively:
    # d[tldextract.extract(url).registered_domain].append(url)

结果

print(d)

defaultdict(list,
            {'xyz.com': ['xyz.com/1/', 'xyz.com/2/', 'xyz.com/3/',
                         'xyz.com/4/', 'xyz.com/5/'],
             'abc.com': ['abc.com/6/', 'abc.com/7/', 'abc.com/8/',
                         'abc.com/9/', 'abc.com/10/']})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM