2010-11-27 168 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