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

How can I access and count a value of an attribute of Json file in Python?

我有这个 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_update": "20201028",
                    "engine_version": "6.90",
                    "method": "blacklist",
                    "result": null
                },
                "AVG": {
                    "category": "malicious",
                    "engine_name": "AVG",
                    "engine_update": "20201028",
                    "engine_version": "18.4.3895.0",
                    "method": "blacklist",
                    "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,因此对比较求和计算其为真的次数。