user1927396
user1927396

Reputation: 459

Constructing a dictionary with large volume of data in a variable

I have the following data in a variable. My goal is to construct a dictionary with number as index and its values being url, owner email and commitMessage message. I need some ideas on how can this be done or if there is a better implementation of this. I really appreciate your input.

{
"project": "platform/vendor/company-proprietary/radio",
"branch": "master",
"id": "I2d46a51ea94d66eefe044e633b15c6eaa7dbb2af",
"number": "147441",
"subject": "radio: Update radio driver version",
"owner": {
    "name": "Shailender bary",
    "email": "[email protected]",
    "username": "bary"
},
"url": "https://company/147441",
"commitMessage": "radio: Update radio driver version\n\nUpdate radio driver version for the FC release\n\nChange-Id: I2d46a51ea94d66eefe044e633b15c6eaa7dbb2af\n",
"createdOn": 1344628179,
"lastUpdated": 1357170699,
"sortKey": "00222ad700023ff1",
"open": true,
"status": "NEW",
"currentPatchSet": {
    "number": "2",
    "revision": "18bb2f7af0dc7cad7b3959c23d886a1a48c8f728",
    "parents": [
        "96968973a0dfa1ce105cdec7c91d3304af0d8393"
    ],
    "ref": "refs/changes/41/147441/2",
    "uploader": {
        "name": "Shailender bary",
        "email": "[email protected]",
        "username": "bary"
    },
    "createdOn": 1344628312,
    "approvals": [
        {
            "type": "VRIF",
            "description": "Verified",
            "value": "-1",
            "grantedOn": 1344654401,
            "by": {
                "name": "Linux Build Service Account",
                "email": "lnxbuild@localhost",
                "username": "lnxbuild"
            }
        },
        {
            "type": "CRVW",
            "description": "Code Review",
            "value": "-2",
            "grantedOn": 1357170699,
            "by": {
                "name": "tom Johnson",
                "email": "[email protected]",
                "username": "jjohnson"
            }
        },
        {
            "type": "CRVW",
            "description": "Code Review",
            "value": "1",
            "grantedOn": 1344628453,
            "by": {
                "name": "Shailender bary",
                "email": "[email protected]",
                "username": "bary"
            }
        },
        {
            "type": "TEST",
            "description": "Developer Verified",
            "value": "1",
            "grantedOn": 1344628453,
            "by": {
                "name": "Shailender bary",
                "email": "[email protected]",
                "username": "bary"
            }
        },
        {
            "type": "CRVW",
            "description": "Code Review",
            "value": "2",
            "grantedOn": 1344629368,
            "by": {
                "name": "johnb Bhatia",
                "email": "[email protected]",
                "username": "johnbb"
            }
        }
    ],
    "files": [
        {
            "file": "/COMMIT_MSG",
            "type": "ADDED"
        },
        {
            "file": "rime/CORE/MAC/inc/qradio_version.h",
            "type": "MODIFIED"
        }
    ]
}

{
"project": "platform/vendor/company-proprietary/radio",
"branch": "master",
"id": "I2c9c0515974a3f69b4341cf5e1e2c1b17ea10641",
"number": "143446",
"subject": "radio: Changes done for P2P Device interface.",
"owner": {
    "name": "Mohit Chang",
    "email": "[email protected]",
    "username": "mChang"
},
"url": "https://company/143446",
"commitMessage": "radio: Changes done for P2P Device interface.\n\nChange-Id: I2c9c0515974a3f69b4341cf5e1e2c1b17ea10641\n",
"createdOn": 1343352861,
"lastUpdated": 1357170602,
"sortKey": "00222ad600023056",
"open": true,
"status": "NEW",
"currentPatchSet": {
    "number": "1",
    "revision": "743006ffcc16a725c7499aaffa1594681488e1f8",
    "parents": [
        "9bef0f406dfbd7bbd747d20a41b68fc1c2fd7c48"
    ],
    "ref": "refs/changes/46/143446/1",
    "uploader": {
        "name": "Mohit Chang",
        "email": "[email protected]",
        "username": "mChang"
    },
    "createdOn": 1343352861,
    "approvals": [
        {
            "type": "VRIF",
            "description": "Verified",
            "value": "1",
            "grantedOn": 1343360579,
            "by": {
                "name": "Linux Build Service Account",
                "email": "lnxbuild@localhost",
                "username": "lnxbuild"
            }
        },
        {
            "type": "CRVW",
            "description": "Code Review",
            "value": "-2",
            "grantedOn": 1357170602,
            "by": {
                "name": "tom Johnson",
                "email": "[email protected]",
                "username": "jjohnson"
            }
        },
        {
            "type": "CRVW",
            "description": "Code Review",
            "value": "1",
            "grantedOn": 1343353135,
            "by": {
                "name": "Shailender bary",
                "email": "[email protected]",
                "username": "bary"
            }
        },
        {
            "type": "TEST",
            "description": "Developer Verified",
            "value": "1",
            "grantedOn": 1343353135,
            "by": {
                "name": "Shailender bary",
                "email": "[email protected]",
                "username": "bary"
            }
        },
        {
            "type": "CRVW",
            "description": "Code Review",
            "value": "2",
            "grantedOn": 1343355565,
            "by": {
                "name": "johnb Bhatia",
                "email": "[email protected]",
                "username": "johnbb"
            }
        }
    ],
    "files": [
        {
            "file": "/COMMIT_MSG",
            "type": "ADDED"
        },
        {
            "file": "rime1_2/CORE/HDD/inc/radio_hdd_main.h",
            "type": "MODIFIED"
        },
        {
            "file": "rime1_2/CORE/HDD/src/radio_hdd_cfg80211.c",
            "type": "MODIFIED"
        },
        {
            "file": "rime1_2/CORE/HDD/src/radio_hdd_hostapd.c",
            "type": "MODIFIED"
        },
        {
            "file": "rime1_2/CORE/HDD/src/radio_hdd_main.c",
            "type": "MODIFIED"
        }{
            "file": "rime1_2/CORE/HDD/src/radio_hdd_p2p.c",
            "type": "MODIFIED"
        }
    ]
}

}

Upvotes: 1

Views: 97

Answers (3)

Amyth
Amyth

Reputation: 32949

okay, maybe just write a custom function to extract the data out of it? maybe something like the following.

instance = {"project":"platform/vendor/company-proprietary/radio","branch":"master","id":"I2d46a51ea94d66eefe044e633b15c6eaa7dbb2af","number":"147441","subject":"radio: Update radio driver version","owner":{"name":"Shailender bary","email":"[email protected]","username":"bary"},"url":"https://company/147441","commitMessage":"radio: Update radio driver version\n\nUpdate radio driver version for the FC release\n\nChange-Id: I2d46a51ea94d66eefe044e633b15c6eaa7dbb2af\n","createdOn":1344628179,"lastUpdated":1357170699,"sortKey":"00222ad700023ff1","open":true,"status":"NEW","currentPatchSet":{"number":"2","revision":"18bb2f7af0dc7cad7b3959c23d886a1a48c8f728","parents":["96968973a0dfa1ce105cdec7c91d3304af0d8393"],"ref":"refs/changes/41/147441/2","uploader":{"name":"Shailender bary","email":"[email protected]","username":"bary"},"createdOn":1344628312,"approvals":[{"type":"VRIF","description":"Verified","value":"-1","grantedOn":1344654401,"by":{"name":"Linux Build Service Account","email":"lnxbuild@localhost","username":"lnxbuild"}},{"type":"CRVW","description":"Code Review","value":"-2","grantedOn":1357170699,"by":{"name":"tom Johnson","email":"[email protected]","username":"jjohnson"}},{"type":"CRVW","description":"Code Review","value":"1","grantedOn":1344628453,"by":{"name":"Shailender bary","email":"[email protected]","username":"bary"}},{"type":"TEST","description":"Developer Verified","value":"1","grantedOn":1344628453,"by":{"name":"Shailender bary","email":"[email protected]","username":"bary"}},{"type":"CRVW","description":"Code Review","value":"2","grantedOn":1344629368,"by":{"name":"johnb Bhatia","email":"[email protected]","username":"johnbb"}}],"files":[{"file":"/COMMIT_MSG","type":"ADDED"},{"file":"rime/CORE/MAC/inc/qradio_version.h","type":"MODIFIED"}]}}


#Say data is the dictionary you want to save the data to.
data = {}

def sanitize_data(variable):
    """ A simple function to sanitize data"""
    instance_data = {}

    level_one = ("url", "commitMessage")
    level_two = ("name", "email")

    for x in level_one:
        instance_data[x] = variable[x]

    for x in level_two:
        instance_data[x] = variable["owner"][x]

    index = len(data)
    data[index] = instance_data
    print data


>>>sanitize_data(instance)
{0: {'url': 'https://company/147441', 'commitMessage': 'radio: Update radio driver version\n\nUpdate radio driver', 'name': 'Shailenderbary', 'email': '[email protected]'}}

Upvotes: 0

XORcist
XORcist

Reputation: 4367

I'd go with a tuple for the data, no need to create a special class for it:

d = {1: (url, owner_mail, commit_msg), ...}

or, if the index doesn't really matter much, use a list and have the index implicitly (position of data in the list).

d = [(url, owner_mail, commit_msg), ...]

Upvotes: 0

Woot4Moo
Woot4Moo

Reputation: 24316

You would push this into a dictionary like this:

store ={1:my_object, 2:my_object}

Where my_object is a class you have created that holds the attributes you described in your question:

url,owner email and commitMessage

Upvotes: 1

Related Questions