[英]Python how to handle # in a dictionary
我從 last.fm 的 api 中得到了一些 json,我使用 simplejson 將它們序列化為字典。 下面是基本結構的快速示例。
{
"artist": "similar": {
"artist": {
"name": "Blah",
"image": [{
"#text": "URLHERE",
"size": "small"
}, {
"#text": "URLHERE",
"size": "medium"
}, {
"#text": "URLHERE",
"size": "large"
}]
}
}
}
任何想法如何訪問各種不同大小的圖像網址?
謝謝,
傑克
Python 對用作字典鍵的字符串中的 # 沒有任何問題。
>>> 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 對象具有相同的鍵“圖像”三次,不能共存並做任何有用的事情。
在 Javascript 中,這兩種語法是等價的:
o.foo
o['foo']
在 Python 中,它們不是。 第一個給你 foo 屬性,第二個給你 foo 鍵。 (這是否是一個好主意尚有爭議。)在 Python 中,您將無法訪問#text
為:
o.#text
因為散列將開始注釋,並且您將遇到語法錯誤。
但是你要
o['#text']
任何狀況之下。
您可以使用列表理解從圖像列表中獲取您想要的內容。 就像是
desired = [x for x in images if minSize < x['size'] < maxSize]
在這里,圖像將是數據結構內部級別的字典列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.