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

发布于 2024-10-04 21:24:31 字数 768 浏览 6 评论 0原文

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

我应该如何完成这项任务,特别是分解?

In my app I'm connecting to a server which returns some json style unicode string resembling dictionary of dictionaries. As a result I'd like to get one leveled dictionary with id as a key and unicode value like this :

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

So I load the response with built in json module :

>>> 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'>

You can see the returned object here. Then I should decompose it to get rid of the parent dictionary. And finally encode the id's. I've found two methods how to do the encoding. One :

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

and second:

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

How I should do this task, especially the decomposition ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月寒剑心 2024-10-11 21:24:31

这应该有效:

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

您还可以使用生成器表达式,如 dugres 的答案所示。

This should work:

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

You could also use a generator expression, as in dugres' answer.

你与清晨阳光 2024-10-11 21:24:31
decomp=dict((v['id'], v['name']) for v in jsondata.values())
decomp=dict((v['id'], v['name']) for v in jsondata.values())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文