Python 嵌套字典/json的分解与解码

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

在我的应用程序中,我连接到一个服务器,该服务器返回一些类似于字典字典的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'>
第二:

>>> 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"]