【问题标题】:Finding values in JSON在 JSON 中查找值
【发布时间】:2013-03-24 07:34:28
【问题描述】:

我想做的是找到关键“符号”下的市场价值。

使用此代码我得到错误

File "C:\Python27\bitcoinAPI", line 9, in getmarket
    for key, value in data.items():
AttributeError: 'list' object has no attribute 'items'

代码如下:

def getmarket():
    page = urllib2.urlopen("http://bitcoincharts.com/t/markets.json")
    data = json.load(page)
    for key, value in data.items():
        if ["symbol"] == "mtgoxUSD":
            print ["symbol"]
getmarket()

我也试过了

for key, value in data.itervalues():
for key, value in data.iteritems():

他们都说列表没有任何属性

【问题讨论】:

    标签: json python-2.7 dictionary


    【解决方案1】:

    解码您指定的 json 后,json.load 方法返回一个列表而不是字典。错误消息是指列表data 没有items 方法。

    此外,此表达式:["symbol"] == "mtgoxUSD",将始终返回 false,因为您将带有单个元素 ("symbol") 的列表与字符串 "mtgoxUSD" 进行比较。

    此代码可能会对您有所帮助:

    def getmarket():
        page = urllib2.urlopen("http://bitcoincharts.com/t/markets.json")
        data = json.load(page)
        for elem in data:
            if elem['symbol'] == "mtgoxUSD":
                print elem
    

    【讨论】:

    • 啊,非常感谢!我到处都说python将它作为字典加载。所以这就是我认为的原因。谢谢。
    • 如何区分列表和字典?
    • 对不起,我还有一个问题......为什么 if elem['symbol'] 与 if['symbol'] 不同?
    • json.load 返回的python对象的类型取决于json本身。如果 json 描述了一个 json 对象数组(就像在本例中那样),那么返回的 python 对象将是一个字典列表。要回答您的第二个问题,elem['symbol'] 将获取与字典 elem 中的键 'symbol' 关联的值。而 ['symbol'] 只是描述了一个包含单个元素的列表。
    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 2010-12-14
    • 2017-04-11
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多