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

如何修复Python代码从字典中提取所有MD5哈希值到列表

修复Python代码提取MD5哈希值的问题

我正在编写一段Python代码,目的是从名为example的字典中提取所有MD5哈希值并整理成列表,但当前代码存在问题。请告诉我如何修复这段代码,使其能将所有MD5哈希值存入列表。

注意:每个哈希条目可能缺少部分哈希类型,且仅需修复现有代码,无需完全重写。

原代码

example = {
    'iocs': {
        'high confidence': {
            'domains': ['evil.com',
                'bad.com'
            ],
            'ips': ['8.8.8.8'],
            'hashes': [{
                'md5': '098F6BCD4621D373CADE4E832627B4F6',
                'sha1': 'A94A8FE5CCB19BA61C4C0873D391E987982FBBD3',
                'sha256': '9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08'
            }]
        },
        'medium confidence': {
            'domains': ['test.com', 'lessbad.com'],
            'ips': ['10.10.10.10'],
            'hashes': [{
                'md5': '5D41402ABC4B2A76B9719D911017C592',
                'sha1': 'AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D',
                'sha256': '2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824'
            }, {
                'sha256': '2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824'
            }]

        },
        'low confidence': {
            'domains': ['nice.com', 'good.com'],
            'ips': ['2.2.2.2'],
            'hashes': [{
                'md5': '7D793037A0760186574B0282F2F435E7',
                'sha1': '7C211433F02071597741E6FF5A8EA34789ABBF43',
                'sha256': '486EA46224D1BB4FB680F34F7C9AD96A8F24EC88BE73EA8E5A6C65260E9CB8A7'
            }]
        }
    }
}

for confidence, indicators in len(range(vendor_data.get('iocs'))):
md5s = ''
for hash_dict in vendor_data.get('hashes'):
    if hash_dict['md5']:
    md5s.append(hash_dict.get(md5))

问题分析与修复

原代码存在多个语法和逻辑错误,以下是修复后的完整代码及对应问题点:

example = {
    'iocs': {
        'high confidence': {
            'domains': ['evil.com', 'bad.com'],
            'ips': ['8.8.8.8'],
            'hashes': [{
                'md5': '098F6BCD4621D373CADE4E832627B4F6',
                'sha1': 'A94A8FE5CCB19BA61C4C0873D391E987982FBBD3',
                'sha256': '9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08'
            }]
        },
        'medium confidence': {
            'domains': ['test.com', 'lessbad.com'],
            'ips': ['10.10.10.10'],
            'hashes': [{
                'md5': '5D41402ABC4B2A76B9719D911017C592',
                'sha1': 'AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D',
                'sha256': '2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824'
            }, {
                'sha256': '2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824'
            }]
        },
        'low confidence': {
            'domains': ['nice.com', 'good.com'],
            'ips': ['2.2.2.2'],
            'hashes': [{
                'md5': '7D793037A0760186574B0282F2F435E7',
                'sha1': '7C211433F02071597741E6FF5A8EA34789ABBF43',
                'sha256': '486EA46224D1BB4FB680F34F7C9AD96A8F24EC88BE73EA8E5A6C65260E9CB8A7'
            }]
        }
    }
}

# 修复点1:初始化md5s为列表(字符串无法使用append方法)
md5s = []
# 修复点2:遍历example['iocs']的键值对,获取每个置信度分组的指标数据
for confidence, indicators in example['iocs'].items():
    # 修复点3:遍历当前分组下的hashes列表,用get避免键不存在报错
    for hash_dict in indicators.get('hashes', []):
        # 修复点4:安全判断md5键是否存在,避免KeyError
        if 'md5' in hash_dict:
            # 修复点5:用字符串'md5'作为键取值,原代码的md5是未定义变量
            md5s.append(hash_dict['md5'])

# 输出结果验证
print(md5s)

关键修复说明

  1. 变量名错误:原代码误用vendor_data,实际字典变量是example,统一替换为正确变量名
  2. 外层循环语法错误:原循环写法完全不符合Python语法,改为遍历example['iocs'].items()获取每个置信度分组
  3. 容器类型错误:md5s初始化为字符串'',改为空列表[]才能使用append方法
  4. 遍历对象错误:内层循环应遍历每个分组下的hashes列表,而非全局取hashes
  5. 键存在性判断错误:直接用hash_dict['md5']会在键不存在时抛出KeyError,改为判断'md5' in hash_dict
  6. 参数错误:hash_dict.get(md5)中的md5是未定义变量,改为字符串'md5',或直接用hash_dict['md5'](已判断键存在)

运行修复后的代码,会输出所有提取到的MD5哈希值列表:

['098F6BCD4621D373CADE4E832627B4F6', '5D41402ABC4B2A76B9719D911017C592', '7D793037A0760186574B0282F2F435E7']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:25:33