You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:从字典列表中提取不同域名的实现方法

提取列表中URL的唯一域名(Python化实现)

不用正则的话,Python标准库的urllib.parse模块是更可靠、更符合Python风格的解决方案——它专门用来解析URL结构,能处理各种合法URL格式,比正则表达式更不易出错。

实现步骤

  1. 导入urlparse工具(Python3中位于urllib.parse)
  2. 遍历列表中的每个字典,提取url字段并解析出域名部分(netloc属性)
  3. 利用集合自动去重的特性,快速得到唯一域名
  4. 按需转换为你需要的格式

代码示例

先定义原始列表

from urllib.parse import urlparse

url_list = [
    {'url': 'https://stackoverflow.com/questions', 'number': 10},
    {'url': 'https://stackoverflow.com/users', 'number': 40},
    {'url': 'https://stackexchange.com/tour', 'number': 40}, 
    {'url': 'https://stackexchange.com/whatever/whatever', 'number': 25}
]

生成第二种格式(更简便高效)

直接得到域名字符串的列表:

# 集合推导式去重,再转成列表
unique_domains = list({urlparse(item['url']).netloc for item in url_list})
# 输出结果: ['stackoverflow.com', 'stackexchange.com']

生成第一种格式

如果需要字典组成的列表,基于上面的结果转换即可:

unique_domains_format1 = [{'url': f'https://{domain}'} for domain in unique_domains]
# 输出结果: [{'url': 'https://stackoverflow.com'}, {'url': 'https://stackexchange.com'}]

为什么这个方法更好?

  • 可靠性:urlparse是官方维护的URL解析工具,能处理带端口、子域名等复杂情况,不会像正则那样因URL格式变种出现匹配错误
  • 效率:集合的去重操作是O(n)时间复杂度,比手动遍历判断更高效
  • 简洁性:一行集合推导式就能完成去重提取,符合Python的"简洁优雅"风格

内容的提问来源于stack exchange,提问作者migueltic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:15:39