python dictionary/json inception



如何在字典中提取、拆分和附加字典中的数组?

这是我得到的数据:

data = {
    "Event":{
        "distribution":"0",
        "orgc":"Oxygen",
        "Attribute": [{
            "type":"ip-dst",
            "category":"Network activity",
            "to_ids":"true",
            "distribution":"3",
            "value":["1.1.1.1","2.2.2.2"]
        }, {
            "type":"url",
            "category":"Network activity",
            "to_ids":"true",
            "distribution":"3",
            "value":["msn.com","google.com"]
        }]
    }
}

这就是我需要的——

{
    "Event": {
        "distribution": "0",
        "orgc": "Oxygen",
        "Attribute": [{
                "type": "ip-dst",
                "category": "Network activity",
                "to_ids": "true",
                "distribution": "3",
                "value": "1.1.1.1"
            }, {
                "type": "ip-dst",
                "category": "Network activity",
                "to_ids": "true",
                "distribution": "3",
                "value": "2.2.2.2"
            }, {
                "type": "url",
                "category": "Network activity",
                "to_ids": "true",
                "distribution": "3",
                "value": "msn.com"
            }, {
                "type": "url",
                "category": "Network activity",
                "to_ids": "true",
                "distribution": "3",
                "value": "google.com"
            }
        }
    }

这就是我玩它的地方,完全迷路了!!

for item in data["Event"]["Attribute"]:
    if "type":"ip-dst" and len("value")>1:
        if 'ip-dst' in item["type"] and len(item["value"])>1:
            for item in item["value"]:

并且完全失去

这个怎么样?

#get reference to attribute dict
attributes = data["Event"]["Attribute"]
#in the event dictionary, replace it with an empty list
data["Event"]["Attribute"] = []
for attribute in attributes:
    for value in attribute["value"]:
        #for every value in every attribute, copy that attribute
        new_attr = attribute.copy()
        #set the value to that value
        new_attr["value"] = value
        #and append it to the attribute list
        data["Event"]["Attribute"].append(new_attr)

这将适用于您所显示的数据结构,但不一定适用于所有类型的嵌套数据,因为我们对属性进行了浅层复制。这意味着您必须确保除了"value"列表之外,它只包含原子值,如数字、字符串或布尔值。值列表可能包含嵌套结构,因为我们只是将引用移动到那里。

最新更新