词典功能不可用?

时间:2018-07-28 08:12:00

标签: python dictionary

我正在尝试从python 3.5中的API调用获取响应,并且需要过滤掉输出。

http响应已转换为字典,但是由于某种原因,我无法在其上应用字典功能。

我想使用标准内置函数(例如result.items(),result.keys()等)从字典中打印键,值

代码:

import os
import json
from xml.etree.ElementTree import ElementTree
import requests
import urllib
import requests
url = 'http://demo.assetexplorer.com/api/cmdb/ci/count/all?OPERATION_NAME=read&TECHNICIAN_KEY=5E28C6CA-CCE2-4C2F-A91D-B37CCA17C629'
response = urllib.request.urlopen(url)
result = json.loads(response.readline().decode('utf-8'))
print(type(result))
print(result)

输出:

<class 'dict'>
{'API': {'response': {'operation': {'name': 'read', 'Details': {'field-values': {'record': {'value': 203}, 'totalRecords': 1}, 'field-names': {'name': {'content': 'Count', 'type': 'Integer'}}}, 'result': {'status': 'Success', 'created-date': 'Jul 28, 2018 03:36 PM', 'statuscode': 200, 'message': 'Successfully fetched.'}}}, 'version': 1}}

type()确实显示变量是字典,我在这里缺少什么? 我看到的“结果”变量的图像 output

1 个答案:

答案 0 :(得分:0)

我尝试使用python 3.6。清理代码,然后test_dict.items()和test_dict.keys()都可以工作。 第一件事是http://www.example.com没有提供json,所以我用了'https://jsonplaceholder.typicode.com/posts/1'

第二件事是将urllib与解码器一起使用给我错误“ json.decoder.JSONDecodeError:期望属性名称用双引号引起来:” 因此根据此stackoverflow post

对其进行了修改

这是工作代码

import json
import requests

url = 'https://jsonplaceholder.typicode.com/posts/1'
test_value = requests.get(url).json()
print(test_value)
print(test_value.items())
print(test_value.keys())

这是输出

{'userId':1,'id':1,'title':'sut a face face repellat Provident occaecatiexcepturi optio reprehenderit','body':'quia et suscipit \ nsuscipit recusandae consequuntur expedita et cum \ nreprehenderit molestiae ut qua quatam \ nnostrum rerum est autem sunt rem eveniet architecto'}

dict_items([('userId',1),('id',1),('title','sut aut facere repellat Provident occaecatiexcepturi optio reprehenderit'),('body','quia et suscipit \ nsuscipit recusandae consequuntur expedita et cum \ nreprehenderit molestiae ut ut quas totam \ nnostrum rerum est autem sunt rem eveniet architecto')]))

dict_keys(['userId','id','title','body'])