2013-02-22 44 views
0

我有以下變量,試圖從中提取修訂值..是否有任何人對此有何輸入?解析字典以獲取值

u'revision': u'ad0beef66e5890cde6f0961ed03d8bc7e3defc63' 

輸入: -

data ={u'status': u'MERGED', u'topic': u'', u'currentPatchSet': {u'approvals': [{u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'type': u'CRVW', u'description': u'Code Review', u'value': u'2', u'grantedOn': 1360897100}, {u'type': u'SUBM', u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'value': u'1', u'grantedOn': 1360897100}, {u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'type': u'TEST', u'description': u'Developer Verified', u'value': u'1', u'grantedOn': 1360897100}, {u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'type': u'VRIF', u'description': u'Verified', u'value': u'1', u'grantedOn': 1360897100}], u'createdOn': 1360897100, u'number': u'1', u'parents': [u'354a90cd1ae4ba9ce2a2a4ad38f8efbc8c02b02d', u'e4ffc07a6f78210a49f6ad2e0d705d7054c20ed6'], u'uploader': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'ref': u'refs/changes/52/249452/1', u'revision': u'ad0beef66e5890cde6f0961ed03d8bc7e3defc63'}, u'url': u'https://review-android.company.com/249452', u'createdOn': 1360897100, u'number': u'249452', u'lastUpdated': 1360897121, u'project': u'platform/vendor/qcom-proprietary/wlan', u'sortKey': u'00231d720003ce6c', u'branch': u'master', u'owner': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'open': False, u'id': u'Iad0beef66e5890cde6f0961ed03d8bc7e3defc63', u'subject': u'Merge "wlan: Enable ActiveModeOffload by default"'} 

OUTPUT: -

ad0beef66e5890cde6f0961ed03d8bc7e3defc63 
+1

[** Python教程**](http://docs.python.org/2/tutorial/)解釋了[如何訪問字典](http://docs.python .ORG/2 /教程/ datastructures.html#字典)。 – 2013-02-22 23:08:09

回答

2

只需通過遵循 'currentPatchSet' 鍵,然後按 '修改' 鍵檢索

data['currentPatchSet']['revision'] 

這是一個交互式的例子工作原理:

>>> import pprint # pretty print for seeing the layout of the dict 
>>> data ={u'status': u'MERGED', u'topic': u'', u'currentPatchSet': {u'approvals': [{u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'type': u'CRVW', u'description': u'Code Review', u'value': u'2', u'grantedOn': 1360897100}, {u'type': u'SUBM', u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'value': u'1', u'grantedOn': 1360897100}, {u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'type': u'TEST', u'description': u'Developer Verified', u'value': u'1', u'grantedOn': 1360897100}, {u'by': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'type': u'VRIF', u'description': u'Verified', u'value': u'1', u'grantedOn': 1360897100}], u'createdOn': 1360897100, u'number': u'1', u'parents': [u'354a90cd1ae4ba9ce2a2a4ad38f8efbc8c02b02d', u'e4ffc07a6f78210a49f6ad2e0d705d7054c20ed6'], u'uploader': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'ref': u'refs/changes/52/249452/1', u'revision': u'ad0beef66e5890cde6f0961ed03d8bc7e3defc63'}, u'url': u'https://review-android.company.com/249452', u'createdOn': 1360897100, u'number': u'249452', u'lastUpdated': 1360897121, u'project': u'platform/vendor/qcom-proprietary/wlan', u'sortKey': u'00231d720003ce6c', u'branch': u'master', u'owner': {u'username': u'lnxbuild', u'name': u'Linux Build Service Account', u'email': u'[email protected]'}, u'open': False, u'id': u'Iad0beef66e5890cde6f0961ed03d8bc7e3defc63', u'subject': u'Merge "wlan: Enable ActiveModeOffload by default"'} 

讓我們想象

>>> pprint.pprint(data) 
{u'branch': u'master', 
u'createdOn': 1360897100, 
u'currentPatchSet': {u'approvals': [{u'by': {u'email': u'[email protected]', 
               u'name': u'Linux Build Service Account', 
               u'username': u'lnxbuild'}, 
             u'description': u'Code Review', 
             u'grantedOn': 1360897100, 
             u'type': u'CRVW', 
             u'value': u'2'}, 
            {u'by': {u'email': u'[email protected]', 
               u'name': u'Linux Build Service Account', 
               u'username': u'lnxbuild'}, 
             u'grantedOn': 1360897100, 
             u'type': u'SUBM', 
             u'value': u'1'}, 
            {u'by': {u'email': u'[email protected]', 
               u'name': u'Linux Build Service Account', 
               u'username': u'lnxbuild'}, 
             u'description': u'Developer Verified', 
             u'grantedOn': 1360897100, 
             u'type': u'TEST', 
             u'value': u'1'}, 
            {u'by': {u'email': u'[email protected]', 
               u'name': u'Linux Build Service Account', 
               u'username': u'lnxbuild'}, 
             u'description': u'Verified', 
             u'grantedOn': 1360897100, 
             u'type': u'VRIF', 
             u'value': u'1'}], 
         u'createdOn': 1360897100, 
         u'number': u'1', 
         u'parents': [u'354a90cd1ae4ba9ce2a2a4ad38f8efbc8c02b02d', 
            u'e4ffc07a6f78210a49f6ad2e0d705d7054c20ed6'], 
         u'ref': u'refs/changes/52/249452/1', 
         u'revision': u'ad0beef66e5890cde6f0961ed03d8bc7e3defc63', 
         u'uploader': {u'email': u'[email protected]', 
            u'name': u'Linux Build Service Account', 
            u'username': u'lnxbuild'}}, 
u'id': u'Iad0beef66e5890cde6f0961ed03d8bc7e3defc63', 
u'lastUpdated': 1360897121, 
u'number': u'249452', 
u'open': False, 
u'owner': {u'email': u'[email protected]', 
      u'name': u'Linux Build Service Account', 
      u'username': u'lnxbuild'}, 
u'project': u'platform/vendor/qcom-proprietary/wlan', 
u'sortKey': u'00231d720003ce6c', 
u'status': u'MERGED', 
u'subject': u'Merge "wlan: Enable ActiveModeOffload by default"', 
u'topic': u'', 
u'url': u'https://review-android.company.com/249452'} 

所以修訂似乎是在currentPatchSet字典中的數據

>>> pprint.pprint(data['currentPatchSet']) 
{u'approvals': [{u'by': {u'email': u'[email protected]', 
         u'name': u'Linux Build Service Account', 
         u'username': u'lnxbuild'}, 
       u'description': u'Code Review', 
       u'grantedOn': 1360897100, 
       u'type': u'CRVW', 
       u'value': u'2'}, 
       {u'by': {u'email': u'[email protected]', 
         u'name': u'Linux Build Service Account', 
         u'username': u'lnxbuild'}, 
       u'grantedOn': 1360897100, 
       u'type': u'SUBM', 
       u'value': u'1'}, 
       {u'by': {u'email': u'[email protected]', 
         u'name': u'Linux Build Service Account', 
         u'username': u'lnxbuild'}, 
       u'description': u'Developer Verified', 
       u'grantedOn': 1360897100, 
       u'type': u'TEST', 
       u'value': u'1'}, 
       {u'by': {u'email': u'[email protected]host', 
         u'name': u'Linux Build Service Account', 
         u'username': u'lnxbuild'}, 
       u'description': u'Verified', 
       u'grantedOn': 1360897100, 
       u'type': u'VRIF', 
       u'value': u'1'}], 
u'createdOn': 1360897100, 
u'number': u'1', 
u'parents': [u'354a90cd1ae4ba9ce2a2a4ad38f8efbc8c02b02d', 
       u'e4ffc07a6f78210a49f6ad2e0d705d7054c20ed6'], 
u'ref': u'refs/changes/52/249452/1', 
u'revision': u'ad0beef66e5890cde6f0961ed03d8bc7e3defc63', 
u'uploader': {u'email': u'[email protected]', 
       u'name': u'Linux Build Service Account', 
       u'username': u'lnxbuild'}} 

確實是這樣,在 '修正' 項下。我們檢索它:

>>> print data['currentPatchSet']['revision'] 
ad0beef66e5890cde6f0961ed03d8bc7e3defc63 
>>>