如何从字典列表中筛选数据并提取去重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
相关产品推荐
相关产品推荐

