Python如何在字典中处理#

时间:2010-05-30 14:04:32

标签: python json api

我从last.fm的api获得了一些json,我使用simplejson将其序列化为字典。下面是基本结构的简要示例。

{ "artist":
    "similar": { 
        "artist": {
            "name": "Blah",
            "image": [{"#text":"URLHERE","size": "small"},{"#text":"URLHERE","size":"medium"},{"#text":"URLHERE","size":"large"}]
         }
     }
}

我是如何访问各种不同尺寸的图片网址的?

谢谢,
千斤顶

3 个答案:

答案 0 :(得分:4)

Python在用作dict键的字符串中没有任何问题。

>>> import json
>>> j = '{"#foo": 6}'
>>> print json.loads(j)
{u'#foo': 6}
>>> print json.loads(j)[u'#foo']
6
>>> print json.loads(j)['#foo']
6

但是,您发布的JSON存在问题。首先,它是无效的(也许你错过了几个逗号?)。对于两个,你有一个JSON对象具有相同的键“图像”三次,它不能共存并做任何有用的事情。

答案 1 :(得分:3)

在Javascript中,这两种语法是等价的:

o.foo
o['foo']

在Python中,它们不是。第一个给你foo属性,第二个给你foo键。 (这是否是一个好主意是值得商榷的。)在Python中,您将无法访问#text

o.#text

因为哈希会启动注释,并且您将出现语法错误。

但你想要

o['#text']

无论如何。

答案 2 :(得分:0)

您可以通过列表理解从图像列表中获得所需内容。像

这样的东西
desired = [x for x in images if minSize < x['size'] < maxSize]

在这里,图像将是来自数据结构内层的dicts列表。