Reputation: 459
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
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
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
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