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

如何从字典列表中筛选数据并提取去重domain值写入文件?

你的两个Python数据处理需求解决方案

嘿,我来帮你搞定这两个和字典列表、文件操作相关的需求!

一、从字典列表中筛选数据并写入文件

其实这个需求的核心是两步:筛选符合条件的数据 + 将筛选结果写入文件。我给你举个具体的例子,你可以根据自己的实际需求调整筛选条件。

假设我们有这样一个字典列表:

user_list = [
    {"name": "Alice", "age": 28, "city": "New York"},
    {"name": "Bob", "age": 22, "city": "London"},
    {"name": "Charlie", "age": 30, "city": "New York"},
    {"name": "Diana", "age": 24, "city": "Paris"}
]

如果我们想筛选出所有居住在New York且年龄大于25的用户,然后把他们的信息写入filtered_users.txt,可以这么写:

# 1. 筛选数据
filtered_data = [user for user in user_list if user["city"] == "New York" and user["age"] > 25]

# 2. 写入文件
with open("filtered_users.txt", "w", encoding="utf-8") as f:
    for user in filtered_data:
        # 可以自定义写入的格式,比如每行是用户的姓名和年龄
        f.write(f"姓名: {user['name']}, 年龄: {user['age']}\n")

这样filtered_users.txt里就会有符合条件的用户信息啦。你只需要把筛选条件换成你自己需要的逻辑就行。

二、提取去重后的domain并写入文件

针对你给出的tag_list数据,我们需要先层层遍历嵌套的列表和字典,把所有domain值提取出来,去重后再逐行写入domain.txt。

直接上代码,每一步我都加了注释:

# 你的示例数据
tag_list = [[{'script': [{'domain': 'random.com', 'path': 'js/custom.js'}]}, {'script': [{'domain': 'cdnjs.cloudflare.com', 'path': '/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.js'}]}, {'link': [{'domain': 'random.com', 'path': 'css/bootstrap.min.css'}]}, {'link': [{'domain': 'random.com', 'path': 'css/style.css'}]}, {'link': [{'domain': 'random.com', 'path': 'css/responsive.css'}]}, {'link': [{'domain': 'random.com', 'path': 'css/jquery.mCustomScrollbar.min.css'}]}, {'link': [{'domain': 'netdna.bootstrapcdn.com', 'path': '/font-awesome/4.0.3/css/font-awesome.css'}]}]]

# 用集合来存储domain,自动去重
domains = set()

# 第一层遍历:外层列表的第一个元素(因为你的tag_list是一个包含单个列表的列表)
for item in tag_list[0]:
    # 第二层遍历:每个字典的values(script或link对应的列表)
    for sub_list in item.values():
        # 第三层遍历:sub_list里的每个字典
        for info in sub_list:
            # 提取domain并加入集合
            domains.add(info['domain'])

# 把集合转成列表,也可以直接遍历集合写入
sorted_domains = sorted(domains)  # 可选:排序,让结果更整齐

# 写入文件
with open("domain.txt", "w", encoding="utf-8") as f:
    for domain in sorted_domains:
        f.write(f"{domain}\n")

运行这段代码后,domain.txt里的内容就和你期望的完全一致:

random.com
cdnjs.cloudflare.com
netdna.bootstrapcdn.com

这样就完美解决你的需求了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:47:35