2010-11-27 131 views
1

在我的應用程序中,我連接到一個服務器,它返回一些類似字典字典的json樣式unicode字符串。因此,我想獲得一個平整字典,id作爲這樣一個關鍵和Unicode值:分解和解碼嵌套字典/ json

{'1': u'autos','3': u'cities'}

所以我加載帶有內置JSON模塊的響應:

>>> jsonData = json.loads(data) 
>>> jsonData 
{u'1': {u'id': u'1', u'name': u'autos'}, u'3': {u'id': u'3', u'name': u'cities'}, u'2': {u'id': u'2', u'name': u'business'},} 
>>> type(jsonData) 
<type 'dict'> 

你可以在這裏看到返回的對象。然後,我應該分解它來擺脫父字典。最後編碼的ID。我發現了兩種如何編碼的方法。一:

>>> import unicodedata 
>>> unicodedata.normalize('NFKD', data).encode('ascii','ignore') 

和第二:

>>> data.encode('ascii','ignore') 

我應該怎麼做這個任務,尤其是分解?

+0

你是什麼意思「擺脫父字典」?你可以指定你想要它看起來像什麼時候完成? – 2010-11-27 12:48:10

+0

編輯了問題 – decarbo 2010-11-27 12:49:09

回答

2

這應該工作:

outputdata = {} 
for id, stuff in jsonData.iteritems(): 
    outputdata[id.encode("ascii")] = stuff[u"name"] 

你也可以用生成器表達式,如dugres的回答。

0
decomp=dict((v['id'], v['name']) for v in jsondata.values()) 
+0

由於id與實際位置無關,因此無法使用發電機。還是謝謝你的回答。 – decarbo 2010-11-27 14:57:51