我从last.fm的api获得了一些json,我使用simplejson将其序列化为字典。下面是基本结构的简要示例。
{ "artist": "similar": { "artist": { "name": "Blah", "image": [{"#text":"URLHERE","size": "small"},{"#text":"URLHERE","size":"medium"},{"#text":"URLHERE","size":"large"}] } } }
我是如何访问各种不同尺寸的图片网址的?
谢谢,
千斤顶
答案 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列表。