簡體   English   中英

Python如何處理字典中的#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM