如何在Python中访问和计数Json文件的属性值?

问题描述

我有这个json文件。这是威胁情报平台的报告。

{
    "data": {
        "attributes": {
            "authentihash": "a077f952798eb3bc0730c7c4774da7636326cf4b524ed6571b7eaf3d43f0bd9b","creation_date": 1387937380,"crowdsourced_yara_results": [
                {
                    "author": "Florian Roth","description": "Malware installrex / AntiFW","rule_name": "PUP_installrex_AntiFWb","ruleset_id": "000ca30c43","ruleset_name": "crime_antifw_installrex","source": "https://github.com/Neo23x0/signature-base"
                }
            ],"first_submission_date": 1389124248,"last_analysis_date": 1603898773,"last_analysis_results": {
                "ALYac": {
                    "category": "undetected","engine_name": "ALYac","engine_update": "20201028","engine_version": "1.1.1.5","method": "blacklist","result": null
                },"APEX": {
                    "category": "undetected","engine_name": "APEX","engine_version": "6.90","AVG": {
                    "category": "malicIoUs","engine_name": "AVG","engine_version": "18.4.3895.0","result": "FileRepMetagen [Malware]"
                },

我将计算有多少反恶意软件将恶意软件检测为“恶意”。所以 我可以访问和打印“ last_analysis_results”的整个列表,但无法访问每种反恶意软件的“类别”。 我尝试:

for elem in data['data']['attributes']['last_analysis_results']:

但是呢?谢谢:)

解决方法

使用.values()获取字典值。然后,您可以访问每个词典的category元素。

sum(r['category'] == 'malicious' for r in data['data']['attributes']['last_analysis_results'].values())

在算术上使用布尔值时,布尔值分别被视为1和0,因此,将比较结果相加即可得出正确的次数。