2013-03-24 52 views
0

我想要做的是找到关键“符号”下的市场价值。在JSON中查找值

有了这个代码,我得到的错误

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(): 

他们都说列表没有属性iterwhatever

回答

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 
+0

啊,完美的太感谢你了!我看到的所有地方都说python把它加载成字典。所以这就是我认为是的原因。谢谢。 – tommo 2013-03-24 10:58:29

+0

我该如何区分列表和字典? – tommo 2013-03-24 11:04:43

+0

对不起,我有另一个问题.... 为什么 如果elem ['symbol'] 不同于 if ['symbol'] ? – tommo 2013-03-24 11:13:56