在我的应用程序中,我正在连接到一个服务器,该服务器返回一些类似字典字典的json样式的unicode字符串。因此,我希望得到一个带有id
的水平字典作为关键字和unicode值,如下所示:
{'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 :(得分:2)
这应该有效:
outputdata = {}
for id, stuff in jsonData.iteritems():
outputdata[id.encode("ascii")] = stuff[u"name"]
您也可以使用生成器表达式,如dugres的回答。
答案 1 :(得分:0)
decomp=dict((v['id'], v['name']) for v in jsondata.values())