python字典/ json初始

时间:2015-12-02 21:20:43

标签: python arrays json dictionary

如何在字典内的字典中拉出,拆分和追加数组?

这是我得到的数据:

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"]:

......完全失去了

1 个答案:

答案 0 :(得分:2)

这个怎么样?

#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"列表之外,它只包含数字,字符串或布尔值等原子值。值列表可能包含嵌套结构,因为我们只在那里移动引用。