我通过谷歌在这里和其他地方搜索了大量文章,并在docs.python.org上阅读了一些相关的文档,但仍然卡住了。
我从以下API获得回复:
{"status":"active","perms":1,"data":{"40332895":{"user_values":{"delta":-203,"value":53.32,"order":42509}}}}
打印'状态'或'数据'没问题。但是,我所能抓取的只是* user_values *的名称,而不是其中的日期。
长期坚持下去,并希望有人能指出我正确的方向。相当新的Python,如果我需要改变我的方式,因为这是不好的做法,或者有一种更简单的方法来获得我想要的结果,请告诉我。
代码:
import json
import urllib2
url = urllib2.urlopen('http://URLofAPI.com')
json_url = json.load(url)
api_result = json_url
for doc in api_result['data']['40332895']['user_values']:
print doc
输出:
三角洲
值
为了
我真正想要的是它们的价值(即:' - 203','53 .32','42509')。
我基本上试图将这些数据保存到list \ dict中(单独或单独),然后将其与其他数据一起打印。我尝试了各种各样的东西,无法管理它。我确信这可能是我想念的超级简单的东西,但它让我疯狂。 :)
另外,我真的希望下面给我'42509',但是我收到了一个错误:
for doc in api_result['data']['40332895']['user_values']['order']
提前致谢!
答案 0 :(得分:2)
您要求输入user_values字典的密钥并获取它们。试试这个:
uv = api_result['data']['40332895']['user_values']
for doc in uv:
print uv[doc]
答案 1 :(得分:1)
在您的示例中,api_result['data']['40332895']['user_values']
是一个字典。
如果您遍历字典,您将获得密钥。在您的原始示例和mgkrebbs答案中就是这种情况。
但是,如果迭代字典的.iteritems()
(或.items()
),则会得到元组中的(键,值)对:
uv = api_result['data']['40332895']['user_values']
for key,value in uv.iteritems():
print key, value
如果您只需要值,则迭代.itervalues()
uv = api_result['data']['40332895']['user_values']
for value in uv.itervalues():
print value
或者,如果您只需要将值作为列表:
my_list = api_result['data']['40332895']['user_values'].values()
.itervalues()和.values()之间的区别在于前者为您提供了一个可迭代(一次返回一个值,但不在内存中创建结构的对象),而后者为您提供了列表。