Python 嵌套字典/json的分解与解码
在我的应用程序中,我连接到一个服务器,该服务器返回一些类似于字典字典的json样式的unicode字符串。因此,我希望得到一个具有Python 嵌套字典/json的分解与解码,python,json,encoding,dictionary,decomposition,Python,Json,Encoding,Dictionary,Decomposition,在我的应用程序中,我连接到一个服务器,该服务器返回一些类似于字典字典的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
键和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'>
第二:
>>> data.encode('ascii','ignore')
我应该如何完成这项任务,尤其是分解?这应该可以:
decomp=dict((v['id'], v['name']) for v in jsondata.values())
outputdata = {}
for id, stuff in jsonData.iteritems():
outputdata[id.encode("ascii")] = stuff[u"name"]
您还可以使用生成器表达式,如dugres的回答中所示。您说的“摆脱父词典”是什么意思?您能指定完成后它的外观吗?无法使用生成器,因为id与实际位置不相关。仍然感谢您的回答。
dict((i.encode(“ascii”)、s[u“name”])对于jsonData.items()中的i,s将更短(但本质上是相同的)。@Sven:如果您使用2.7/3.1,它将更短:{i.encode(“ascii”):s[u“name”]对于jsonData.items()中的i,s
。但我认为我应该坚持基本原则;-)哦,我刚刚注意到我们在2.x的情况下没有使用iteritems()
,但是应该。。。
outputdata = {}
for id, stuff in jsonData.iteritems():
outputdata[id.encode("ascii")] = stuff[u"name"]