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

解析列表/字典时如何提取同时含rep、Ips、ipC键的字典元素

解决方案

核心筛选逻辑

你需要的筛选需求可通过1行列表推导式实现,判断每个字典是否同时包含Ips和ipC两个键即可:

# 输入ipreparray,输出符合要求的字典列表
filtered_items = [item for item in ipreparray if 'Ips' in item and 'ipC' in item]

该逻辑会自动过滤掉仅含rep键的字典,完全匹配你要的筛选规则。

整合到现有代码的完整实现

以下是修改后的get_traffic_stats函数,保留原有逻辑的基础上新增了筛选处理:

import json

def get_traffic_stats(service, domain_name, date):
    try:
        query = 'domains/%s/trafficStats/%s' %(domain_name,date)
        traffic_stats = service.domains().trafficStats().get(name=query).execute()
        # 这里不需要dumps再loads,traffic_stats本身就是字典结构,可直接使用
        resp_dict = traffic_stats
        b = ','
        domrep = str(resp_dict.get('domainReputation'))
        spamratio = str(resp_dict.get('userReportedSpamRatio'))
        spf = str(resp_dict.get('spfSuccessRatio'))
        dkim = str(resp_dict.get('dkimSuccessRatio'))
        dmarc = str(resp_dict.get('dmarcSuccessRatio'))
        encrypt = str(resp_dict.get('inboundEncryptionRatio'))
        
        # 处理IP reputations筛选
        filtered_ip_reps = []
        if 'ipReputations' in resp_dict:
            ipreparray = resp_dict['ipReputations']
            # 执行筛选
            filtered_ip_reps = [item for item in ipreparray if 'Ips' in item and 'ipC' in item]
            # 可按需打印筛选结果
            print("筛选后的IP reputations:", filtered_ip_reps)
        
        # 如果你需要把筛选结果拼入final字符串,可参考以下写法
        ip_rep_str = ';'.join([f"rep:{item['rep']},Ips:{','.join(item['Ips'])},ipC:{item['ipC']}" for item in filtered_ip_reps])
        final = date + b + domain_name + b + domrep + b + spamratio + b + spf + b + dkim + b + dmarc + b + encrypt + b + ip_rep_str
        
        return str(final)
    except Exception as e:
        # 建议加异常捕获避免程序直接崩溃
        print(f"处理出错:{str(e)}")
        return ""

# 测试用你提供的trafficStats数据
trafficStats = {'name': 'domains/account.net/trafficStats/20210718',
                'ipReputations': [{'rep': 'B'},
                                  {'rep': 'L'},
                                  {'rep': 'M'},
                                  {'rep': 'H', 'Ips': ['141.54.247.35-141.54.247.41', '141.54.247.44'], 'ipC': '8'}],
                'domainReputation': 'HIGH',
                'spfSuccessRatio': 1,
                'dkimSuccessRatio': 1,
                'dmarcSuccessRatio': 1,
                'inboundEncryptionRatio': 1,
                'deliveryErrors': [{'errorClass': 'TEMPORARY_ERROR', 'errorType': 'SUSPECTED_SPAM'}]}

测试效果

用你提供的测试数据执行筛选,得到的结果为:

[{'rep': 'H', 'Ips': ['141.54.247.35-141.54.247.41', '141.54.247.44'], 'ipC': '8'}]

完全符合筛选要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:21:00